第十二章 存储类、链接和内存管理

来源:互联网 发布:金10数据官网 双十一 编辑:程序博客网 时间:2024/06/06 17:00

1.作用域:程序中可以访问一个标识符的一个或多个区域。一个代码块是指在开始花括号和对应结束花括号之间的一段代码,可是C99规定语句若为循环语句或者if语句,即使没有花括号,也为一个代码块。

2.函数原型作用域从变量定义到原型声明结尾。

3.一个在所有函数之外定义的变量具有文件作用域。文件作用域变量也被称为全局变量。

4.空链接:具有代码块作用域或函数原型作用域的变量。

5.具有文件作用域的变量可能有内部或外部链接。一个具有外部链接的变量可以在一个多文件程序的任何地方使用。一个具有内部链接的变量可以在一个文件的任何地方使用。用存储类说明符static在函数外部定义内部链接。

6.静态存储时期:变量在程序执行期间一直存在。(如文件作用域)

7.代码块作用域的变量有自动存储时期,进入代码块时分配内存,退出时释放。


8.自动变量:auto为该存储类说明符。内部定义会覆盖外部定义。

9.寄存器变量:register为该存储类说明符。

10.具有代码块作用域的静态变量:静态是指变量的位置固定不变。在代码块内用static声明。对函数参量不能使用static。

11.具有外部链接的静态变量:extern为该存储类说明符。自动初始化为0,只可用常量表达式初始化。用extern来引用已经存在的外部定义。

12.具有内部链接的静态变量:static在所有函数外部定义。只可被与它在同一文件的函数使用。

13.多文件时,只有在一个文件中定义变量,在其它文件中必须用关键字extern引用。

14.说明符static作用于代码块作用域的变量声明时,使改变两具有静态存储时期,在程序运行时保存其值。用于文件作用域的变量时,表明内部链接。

15.随机函数:随机函数例题

16.分配内存:

malloc():接受一个参数(所需内存字节数),分配的内存是匿名的,返回内存的第一个字节地址。ANSI C标准使用指向void的指针(通用指针)。找不到空间,返回空指针。

calloc():第一个参数是所需内存单元的数量,第二个参数是每个单元的字节大小。并将块中所有位置置0.

17.创建数组的三种方法:


18.VLA对多维数组来说更方便。

19.ANSI C类型限定词:C99规定是幂等的,就是将多余的限定词忽略。

20.volatile:变量除了可以被程序改变还可以被其它代理改变。

21.restrict:只可用于指针,表明指针是访问一个数据对象的唯一且初始的方式。

0 1
原创粉丝点击