C Primer Plus 第十二章学习总结……2015.5.5

C Primer Plus

第五版

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

作用域:描述了一个程序可以访问的标示符的一个或多个区域。代码块作用域:在代码块中定义的一个变量,函数的形式参量也具有代码块作用域。C99把代码块扩大到 for while do while 循环 和if语句控制的代码块{};文件作用域:一个在所有函数之外定义的变量。文件作用域也称全局变量。链接分:外部链接,内部链接,空连接。具有代码块作用域或者函数原型作用域的变量有 空连接,意味着它是由其定义的代码块或函数所私有。具有文件作用域的变量可能有内部链接或外部链接,一个具有外部链接的变量可以再一个多文件的程序中的任何地方中使用。一个具有内部链接的变量 可以再一个文件的任何地方使用。static 定义内部链接变量;C语言 变量有两种存储方式:静态存储时期和自动存储时期。变量具有静态存储时期:他在程序运行期间将一直存在。具有文件作

用域的变量和static定义的变量具有静态存储时期。

具有代码块作用域的变量一般具有自动存储时期。C语言通过使用 作用域 链接 存储时期 三种方式定义5种存储类型。:自动 寄存器 具有代码块作用域的静态,具有文件作用域的静态,具有内部链接的静态。自动变量:在代码块或函数头部定义的任意变量都属于自动存储类, 可以使用关键字auto定义的变量 是 自动存储类。代码块或函数中的局部变量将覆盖全局变量。运行离开代码块时全局变量从新起作用。寄存器变量:可以使用 register 定义寄存器变量,但此句是一个请求,并不是一条命令。不一定嫩成功,不能对其使用地址运算符。代码块内静态变量是通过存储类说明符static定义变量,在代码块中只赋值一次。 对函数参量不能使用static外部变量具有外部链接的静态变量 ;外部变量在其他文件中定义,在本文件中使用要用extern 声明 ,在同一文件可以省略。在代码块中使用extern 再次声明只是表面函数要用该变量,其实不声明也可以使用。外部变量作用域 是从声明位置到程序结束。一个外部变量只可以进行一次初始化,一定是在变量被定义的时候。externa char perimes=’A’;错误 extern 表明其是个外部变量,但外部变量只能在定义时被初始化。创建数组有三种方法:1:声明一个数组,声明时用常量表达式2:声明一个变长数组,,声明时用变量表达式指定数组维数3:声明一个指针,调用malloc()函数 (动态分配内存)常用形式 int * ptr=(int *)malloc(n*sizeof(int)); free(ptr)释放内存。int *ptr=(int *)calloc(n,sizeof(int));第一参数:n 所需的内存数量第二参数:每个单元以字节大小。自动存储结果是在运行完定义部分之后自动释放。malloc()创建的数组不必局限于一个函数静态存储时期存储类变量所需内存数量在编译时以知道,在整个程序运行期间都是可用的,在程序开始时存在,在程序结束消失。自动变量在程序进入包含该变量的代码块时产生,在退出这一代码块时终止。动态分配内存在调用malloc或相关函数时产生,调用free释放,内存块可以再一个函数中定义,在另一个函数中释放。如在一个函数中创建返回一个指针,在另一个函数对其释放。限定词 可以在一个声明中多次使用 const const const int n=5;等价于const int n=5;1、指针 参量声明中使用const2、指针本身使用还是其指定的值使用const float *ptr ptr指向一个常量浮点值float *const ptr 总指向一个地址,指向的值可以改变const float *const ptr 都不变float *const ptr 等价于const float * ptr3、对全局变量使用const限定词 volatile restrict

积极思考造成积极人生,消极思考造成消极人生。

C Primer Plus 第十二章学习总结……2015.5.5

相关文章:

你感兴趣的文章:

标签云: