C Primer Plus 第12章 12.9 总结

用于存储程序数据的内存可用存储时期、做用域和连接来表征。存储时期能够是静态的、自动的或者分配的。若是是静态的,内存在程序开始执行时被分配,并在程序运行时一直存在。若是是自动的,变量所用的内存在程序执行到该 变量定义所在的代码块时开始分配 ,在退出代码块时释放。若是是分配 的内存,内存经过调用malloc()分配,经过调用函数free()释放。函数

做用域决定了哪一部分程序能够访问某个数据。在全部函数以外定义的变量具备文件做用域,并对该变量声明以后定义的所有函数可见。在代码块内定义或者做为函数参量定义的变量具备代码块做用域,并只在该代码块及其子代码块中可见。优化

连接描述了程序的某个单元定义的变量可被连接到其余哪些地方。具备代码块做用域的变量做为局部变量,具备空连接。具备文件做用域的变量可有内部连接或外部连接。内部连接意味着变量只可在包含变量定义的文件内部使用。外部连接意味着变量也能够在其余文件中使用。spa

下面是C的一种存储类:指针

C的5种存储类
自动 在一个代码块内(或一个函数头部做为参量)声明的变量,不管有没有存储类修饰符auto,都属于自动存储类。该类具备自动存储时期、代码块做用域和空连接。如未经初始化,它的值是不定的。
寄存器 在一个代码块内(或一个函数头部做为参量)使用存储类修饰符register声明的变量属于寄存器存储类。该 类具备自动存储时期、代码块做用域和空连接,而且您没法得到其地址。把一个变量声明为寄存器变量能够指示编译器提供可用的最快访问。如未经初始化,它的值是不定的。
静态、空连接   在一个代码块内使用存储类修饰符static声明的变量属于静态空连接存储类。该 类具备静态存储时期、代码块做用域和空连接,仅在编译时初始化一次。若是未经初始化,它的字节都设定为0.
静态、外部连接 在全部函数外部定义、未使用存储类修饰符static的变量属于静态、外部连接存储类。该类具备静态存储时期、文件做用域和外部连接,仅在编译时初始化一次。如未经初始化,它的字节都被设为0。
静态、内部连接 在全部函数外部定义、使用存储类修饰符static的变量属于静态、内部连接存储类。该 类具备静态存储时期、文件做用域和内部连接,仅在编译时初始化一次。若是明确初始化,它的字节都被设定为0。

分配内存是使用函数malloc()提供的内存,该函数返回一个指向具备所请求字节数的内存块的指针。将这一内存块的地址做为参数来调用free(),可使该内存块从新可用。rest

类型限定词说明符有const、volatile和restrict。说明符const将数据限定为不变的。在使用指针时,const能够代表指针自己不变或指针指向的数据不变,这取决于const在声明 中的位置。说明符volatile代表数据除了可被程序修改外还能够经过其余方式修改,其目的是警示编译器在优化时不要作出相反的假定。说明符restrict也是为了优化而设置。由restrict限定的指针被认为是提供了对其所指向的数据块的唯一访问途径。内存

相关文章
相关标签/搜索