海口网站建设方案,网站怎么做反爬虫,广告型网站,wordpress 中文版 英文版全局变量初始化而且初始值不为0#xff0c;那么这样的全局变量是放在内存的.data段的#xff0c;如果全局变量初始值为0或者未初始化#xff0c;那么这样的全局变量是放在.bss段的。 考点#xff1a; 考察C/C语言内存模型#xff0c;.data#xff0c;.bss段存放的内容。 … 全局变量初始化而且初始值不为0那么这样的全局变量是放在内存的.data段的如果全局变量初始值为0或者未初始化那么这样的全局变量是放在.bss段的。 考点 考察C/C语言内存模型.data.bss段存放的内容。 C语言内存模型(内存组织方式) C程序开发并编译完成后要载入内存主存或内存条才能运行变量名、函数名都会对应内存中的一块区域。 内存中运行着很多程序我们的程序只占用一部分空间这部分空间又可以细分为以下的区域 1.程序代码区存放函数体的二进制代码。 2.静态数据区(data area)也称全局数据区,包含的数据类型比较多如全局变量、静态变量、一般常量、字符串常量 (1).全局变量区和静态变量区的存储是返回在一块的初始化的全局变量和静态变量在一块区域。未初始化的全局变量和未初始化的静态变量在相邻的另一区域。 (2).常量区域包括字符串常量和一般常量存储在另一区域 注意静态区的内存在程序结束后由系统释放。 3.堆区一般由程序员分配和释放若程序员不释放则程序运行结束后由系统回收。malloc(),calloc(),free()操作的就是这块内存。 注意这里的堆区不同于数据结构的堆堆区的分配方式倒是和数据结构的链表比较相似。 4.栈区由系统自动分配释放存放函数的参数值和局部变量的值等。其操作方式类似于数据结构中的栈。 5.命令形参区存放命令型参数和环境变量的值如通过main()传递的值。 注意未初始化的全局变量的默认值是 0而未初始化的局部变量的值却是垃圾值任意值。 #include stdio.h#include conio.hint global;int main(){int local;printf(global %d\n, global);printf(local %d\n, local);getch();return 0;} #includestdio.h#includestdlib.h#includestring.hint a 0; // 全局初始化区④区char *p1; // 全局未初始化区③区int main(){int b; // 栈区char s[] abc; // 栈区char *p2; // 栈区char *p3 123456; // 123456\0 在常量区②p3在栈上体会与 char s[]abc; 的不同static int c 0; // 全局初始化区p1 (char *)malloc(10), // 堆区p2 (char *)malloc(20); // 堆区// 123456\0 放在常量区但编译器可能会将它与p3所指向的123456优化成一个地方strcpy(p1, 123456);}