
C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以象汇编语言一样对位、字节和地址进行 *** 作, 而这三者是计算机最基本的工作单元。
2. 运算符丰富
C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
3. 数据结构丰富
C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能, 支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。
4. C是结构式语言
结构式语言运袭的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调试。C语言是以猛陵函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
5. C语法限制不太严格,程序设计自由度大
虽然C语言也是强类型语言,但它的语法比较灵活,允许程序编写者有较大的自由度。
6. C语言允许直接访问物理地址,可以直接对硬件进行 *** 作
因此既具有高级语言的功能,又具有低级语言的许多功能,能够象汇编语言一样对位、字节和地址进行 *** 作,而这三者是计算机最基本的工作单元,可以用来写系统软件。
7. C语言程序生成代码质量高,程序执行效率高
一般只比汇编程序生成的目标代码效率低10%~20%。
8. C语言适用范围大,可移植性好
C语言有一个突出的优点就是适合于多种 *** 作系统, 如DOS、UNIX,也适用于多种机型。
编辑本段C源程序的结构特点:
1.一个C语言源程序可以由一个或多个源文件组成。
2.每个源文件可由一个或多个函数组成。
3.一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。
4.源程序中可以有预处理命令(include 命令仅为其中的一种),预处理命令通常枝悄戚应放在源文件或源程序的最前面。
5.每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。
6.标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。
a.pc = p之前的语句都是起干扰作用,可以直接忽略。且看a.pc = p之后,a.pc这个指针指向a.c,也就是结构提a的起始地址,
则有下图可以看到a.pc[0]到a.pc[7]所指向的内存如下
(注意32位编译器默认的4字节对齐):
+-----------------------------+
| a.c | // a.pc[0]
+-----------------------------+
|字节补齐 | // a.pc[1]
+-----------------------------+
|字节补齐 | // a.pc[2]
+-----------------------------+
|字节补齐 | // a.pc[3]
+-----------------------------+
| a.pc字节0 | // a.pc[4]
+-----------------------------+
| a.pc字节1 | // a.pc[5]
+-----------------------------+
| a.pc字节2 | // a.pc[6]
+-----------------------------+
| a.pc字节3 | // a.pc[7]
+-----------------------------+
因此,当对a.pc[4] 到 a.pc[7]赋值的时候,配升仿也改变了a.pc本身的值,使指针无效。
对无效指针的递应用可能但并不一定会导致程序崩溃。
因此我判断a.pc[4]或之笑简后语句可能会崩溃。
可以在对培纤每个a.pc[x]赋值语句之后,打印a.pc的值看指针是否被破坏:
printf("a.pc: %p\n", a.pc)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)