C语言的基础知识

来源:互联网 发布:淘宝客服后台操作 编辑:程序博客网 时间:2024/05/20 04:26

1.
什么是计算机程序?
计算机程序或者软件程序(通常简称程序)是指一组指示计算机执行动作或做出判断的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。
什么是编程语言?
汇编语言是面向机器的程序设计语言。
为什么需要编程语言?
编程语言能够让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。
编程语言是用来干嘛的?
编程语言用来向计算机发出指令。
举例一些编程语言,以及他们各自的特点?
C的特点
1. C是一种结构化语言。层次清晰,便于按模块化方式组织程序,易于调试和维护。

2. C语言的表现能力和处理能力极强。不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构,它还可以直接访问内存的物理地址,进行位级别的操作。

3. 由于C语言实现对硬件的编程操作,所以既可用于系统软件的开发,也适合于应用软件的开发。C语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类计算机上,从而形成了多种版本的C语言。

4. 由于C语言允许直接对位、字节和地址进行操作,能实现汇编语言的大部分功能。

5. 目标代码质量高,程序执行效率高。

总体上来说,C语言的优点是简洁、紧凑、使用方便、灵活、易于学习和应用。仅有32个关键字。9种控制语句,程序的书写形式也很自由。

C语言的弱点:非强类型;语法限制不严格,使得编程者无法过多地依赖C编译程序去查错;缺少实时检查,如数组越界等。
C++的特点:
面向对象、继承、封装、多态性。

由于C++是C的扩展,所以也具有C的特点。

C++在C的基础上,加入了面向对象编程思想,也就决定了C++的效率在某一方面是不如C的。比如定义一种类型,C++用类(Class)来封装,而C可能就直接几个变量的组合就成了一个结构体(Struct),类不仅具有成员变量,还具有成员函数等,在精细的比较其效率时,C会比C++的效率要高。但由于时代的发展,项目或工程的庞大化,基于面向对象的思想显然更能适应。即C++在这方面能比C要做得更漂亮。现在不少系统级编程都是用C++实现,许多应用级别的软件也是用C++实现。
Java的特点:

1. 简单性:风格类似于C++,Java摒弃了C++中容易引发程序错误的地方,如指针和内存管理。

2. 面向对象:Java是一种完全面向对象语言。从这点来看,Java类似于SmallTalk,但其特性、尤其是适用于分布式计算环境的特性远远超越了SmallTalk。

3. 分布式:Java包括一个支持HTTP和FTP等基于TCP/IP协议的子库。因此,Java应用程序可凭借URL打开并访问网络上的对象,其访问方式与访问本地文件系统几乎完全相同。

4. 健壮:Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自己操纵内存减少了内存出错的可能性。

5. 结构中立:Java将程序编译成一种结构中立的中间文件格式。只要有Java运行系统的机器都执行这种中间代码。这种中间语言被设计在虚拟机上运行,由机器相关的运行调试器实现执行。

6. 安全:

1)删除了香指针和手动释放内存等功能,避免了非法内存操作。

2)当Java用来创建浏览器时,语言功能和浏览器本身提供的功能结合起来。

Java在机器上执行前,要经过很多测试,它经过代码校验,检查代码段的格式,检测指针操作,对象操作是否过分以及试图改变一个对象的类型。

7. 可移植的:同体系结构无关的特性使得Java应用程序可以在配备Java解释器和运行环境的任何计算机系统上运行。任何Java代码会被解释成一种中间语言,然后通过不同机子的特定环境(如机器指令)运行程序。实现方便移植的特点。

8. 解释性。Java解释器能直接运行目标代码指令。链接程序通常比编译程序所需资源少。

9. 高性能。如果解释器速

度不慢,Java可以在运行时直接将目标代码翻译成机器指令。Sun用直接解释器一秒钟内可调用300,000个过程。

10. 多线程:Java提供的多线程功能使得在一个程序里可同时执行多个小任务。多线程带来的更大好处是更好的交互性能和实时控制性能。

11. 动态:动态特性允许程序动态地装入运行过程中所需要的类。在运行时确定引用的好处是可以使用已被更新的类,而不必担心会影响原有的代码。如果程序连接了网络中另一系统中的某一类,该类的所有者也可以自由地对该类进行更新,而不会使任何引用该类的程序崩溃。
2.编辑好的程序到成为可以运行的可执行文件,要经历哪几个过程?
1.编辑:输入源程序并存盘(.C)
2.编译:将源程序翻译为目标文件(.OBJ)
3.链接:将目标文件生成可执行文件( .EXE)
4.运行:执行.EXE文件,得到运行结果

3.现阶段为什么要学习C语言,而不是其他的编程语言?
1、相比较其他的编程语言(像C++,JAVA),C语言是个低级语言。从总体上来说,低级的编程语言可以让你更好的了解计算机。

2、设备驱动程序和操作系统只能用C语言来编写。现在,你可能还从来没有编写过一个设备驱动程序或者一个操作系统,但是如果你需要去修改他们的时候,怎么办?

3、如果你想要得到一份编写微控制器程序的工作的时候,该怎么办?他们都是用C语言编写的。就因为不想学习一门新的语言,你就准备限制你能得到工作的机会吗?

4、C的程序比其他用别的语言写的程序,实现相同的功能,它用的代码行数更少,而它带来的运行效率却更快。有时候,你的程序所需要的速度,只有C语言能做到。

5、如果你学习过C语言,你就能学习现在任何的高级编程语言。因为所有的高级语言都是以C语言为基础的(像JAVA,C++,C#等等)。

6、因为C语言已经存在很多年了,它有广泛的使用团体并且有大量的现成代码可以利用。这就使你能在过去程序的基础上,快速和高效的编写新的算法和函数。

7、C语言是一个开源组织的语言。一个开源组织的产物–LINUX,就是用C语言写的。如果你会C语言,你就能参加这个组织并且还能向众多的开源组织投稿,比如参加Source Forge并且给他们投稿。

8、C语言是唯一一个向你阐述指针的本质的语言。而C#和Java干脆跳过了指针这个题目。可是指针确实使C语言变得更加强大。

9、找编程开发方面的工作时,C语言仍然是最普遍需要的语言。所以它值得你花时间去学会它。

10、任何里面有微处理器的设备都支持C语言。从微波炉到手机,都是由C语言技术来推动的
3.C语言有什么特点?
(1)程序结构简洁、紧凑、规整,表达式简练、使用灵活。 (2)编写的程序可读性强,编译效率高。 (3)具有丰富的运算符,多达34种。丰富的数据类型与丰富的运算符相结合,使C语言具有表达灵活和效率高等特点。 (4)数据类型种类繁多。C语言具有5种基本的数据类型和多种构造数据类型以及复合的导出类型,同时还提供了与地址密切相关的指针机器运算符。指针可以指向各种类型的简单变量、数组、结构和联合,乃至函数等。此外,C语言还允许用户自己定义数据类型。 (5)是一种结构化程序设计语言,特别适合大型程序的模块化设计。C语言具有编写结构化程序所必需的基本流程控制语句,C语言程序是由函数集合构成的,函数各自独立,并且作为模块化设计的基本单位。 C语言的源文件,可以分割成多个源程序,分别进行编译,然后连接起来构成可知性的目标文件,为开发大型软件提供了极大的方便。C语言还提供了多种存储属性,使数据可以按其需要在相应的作用域起作用,从而提高了程序的可靠性。 (6)语法限制不太严格,程序设计自由度大。例如,对数组下标越界不作检查,由程序编写者自己保证程序的正确。一般的高级语言语法检查比较严,能检测出几乎所有的语法错误,而C语言允许程序编写者有较大的自由度,因此放宽了语法的检查。程序员应当仔细检查程序,保证其正确,而不要过分依赖C语言编译程序去查错。 (7)允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。因此,C语言既具有高级语言的功能,又兼容低级语言的许多功能,可用来编写系统软件。 (8)生成的目标代码质量高,程序执行效率高。它一般只比汇编程序生成的目标代码率低10%~20%。 (9)具有较高的可移植性。它的语句基本上无须修改就能用于各种型号的计算机和各种操作系统。
(10) 任何里面有微处理器的设备都支持C语言。从微波炉到手机,都是由C语言技术来推动的。
4.什么是常量
在程序执行过程中,其值不发生改变的量称为常量。
常量分类:字符串常量,整数常量,小数常量,字符常量,布尔常量,空常量。

变量就是在程序执行的过程中其值可以改变的量。
变量分类:char,int,float,double等
5.标识符的命名规范是什么?
由字母、数字、下划线组成
必需以字母开头。
不可以是C保留字(关键字)
也不可以是C库函数名
6.什么是数据类型?
数据类型在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作。
每种数据类型占多少个字节大小?每种数据类型的取值范围怎么计算?
char 字符型,占1个字节,取值范围 -128~127
补充:unsigned char 取值范围0~255
short 短整型,占2个字节,取值范围 -32767 ~ 32768
补充:unsigned short 取值范围0 ~ 65536
int 整型,占4个字节,取值范围-2147483648 ~ 2147483647
补充:unsigned int 取值范围 0~4294967295
long int长整型,占4个字节,取值范围-2147483648 ~ 2147483647
补充:unsigned long int 取值范围 0~4294967295
float 单精度浮点型,占4个字节,取值范围3.4E-38~3.4E+38
double 双精度浮点型,占8个字节,取值范围1.7E-308~1.7E+308
long double长双精度浮点型,占10个字节,取值范围3.4E-4932~1.1E+4932
思考:对于数据类型为什么要分类?
因为对于不同的对象,不同的数据类型更具有代表性。
7.字节大小是什么意思?
字节(Byte /bait/ n. [C])是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。
7.怎么计算数据类型或者变量的字节大小?
利用sizeof() 函数计算C语言中各种数据类型所占用的存储空间的大小。
8. 什么是原码?什么是补码?什么是反码?
原码就是前面所介绍的二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
8.正数的原码补码反码怎么表示,负数的原码补码反码怎么表示?
正数的原码,补码,反码都相同,都等于它本身;
负数的原码是:符号位为1,其余不变;
负数的补码是:符号位为1,其余各位求反,末位加1;
反码是:符号位为1,其余各位求反,但末位不加1;
9.C语言运算符有哪几种?
C语言的运算符包括:算术运算符、逻辑运算符、位运算符。
算数运算符:
一、常规的数学运算,包括加(+),减(-),乘(*),除(/),和模除(%)。
二、自加(++)自减(–)运算:
三、带赋值的运算,即在一中提到的物种运算符加上=,组合成复合运算符+=, -=, *=, /=和%=.
逻辑运算符:
包括:1&&逻辑与2||逻辑或3!逻辑非
位运算符:
包括:1&位与符2|位或符3^位异或符4~位取反符
每种运算符进行什么运算?
按相应的运算规则进行运算
10.10.C语言中有哪些控制语句,每种控制语句有什么功能?
C语言9种控制语句
①if( )~else 条件语句
②for( )~ 循环语句
③while( )~ 循环语句
④do~while( ) 循环语句
⑤continue 结束本次循环语句
⑥break 中止执行switch或循环语句
⑦switch 多分支选择语句
⑧goto 转向语句
⑨return 从函数返回语句
11.搞清楚if…else,for循环,while循环,switch…case怎么执行的?

if()是判断括号里的表达式为真(非0)就执行,if(0)意思就是括号里为假,为假则if条件不成立,从而执行else。

for(表达式1;表达式2;表达式3){循环体} 表达式1,是初始化条件,如i=0。 表达式2,循环条件,满足就继续执行循环体,不满足就跳出循环。 表达式3,这个一般是改变循环条件的地方,如i++。

while(表达式){循环体} 表达式的值为真(非0)时, 执行循环体语句。

switch语句的执行流程是: 首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就退出switch语句;若圆括号中表达式的值与所有case后面的常量表达式都不等,则执行default后面的语句,然后退出switch语句,程序流程转向开关语句的下一个语句。

12.break和continue有什么区别?
break是结束当前循环。
continue是结束本次循环。
循环是有很多次的,break之后不再循环,continue结束本次循环后,再开始下一次的循环。