做字素的网站,ozon电商平台如何入驻,用dw做红米网站,邹城网站建设zc273500*************************************************** 更多精彩#xff0c;欢迎进入#xff1a;http://shop115376623.taobao.com *************************************************** 1. C语言变量主要分为全局变量、静态全局变量、局部变量、静态局部变量和寄存器变量。… *************************************************** 更多精彩欢迎进入http://shop115376623.taobao.com *************************************************** 1. C语言变量主要分为全局变量、静态全局变量、局部变量、静态局部变量和寄存器变量。其中静态变量用static关键字进行修饰。程序所占用的内存可以分为以下几个部分:
(1)代码段-存放程序代码只读的不能修改。
(2)全局区(静态区),又称为数据段。
其中.data段存放的是已经初始化的全局变量和静态变量(静态全局变量和静态局部变量)。. bss段存放的是未初始化的全局变量和静态变量(静态全局变量和静态局部变量)。bss段会将未初始化的变量填充为0.
(3)堆: 是一种线性结构类似链表实现也可由其它方法实现。malloc, realloc函数一般从堆上分配内存。注意:和数据结构中的堆不同。
(4)栈: 后进先出结构。主要存储的是局部变量函数形参以及函数地址。
(5)常量区:存储字符串常量。 2. 变量的生存期和作用域 全局变量: 全局变量的作用域是整个源程序即多个文件中有效。通过extern声明。
静态全局变量: 静态全局变量和全局变量的存储域是相同的都存储在数据段。但作用域不相同用static声明的静态全局变量作用域被限制在本文件内。在文件外是无效的。函数或变量前加static,可防止命名冲突。 局部变量: 局部变量是定义在函数体内的当函数执行结束后就自动释放。作用域为整个函数体。
静态局部变量: 与局部变量不同的是它存储在全局区或是静态区局部变量存储在栈上。静态局部变量的作用域也是函数体函数体外无效。但当函数执行完之后静态局部变量一直存在下次调用时可以直接利用上次保存的值即静态局部变量就初始化1次不会重复初始化。 如果在头文件声明了静态变量那么每个包含该头文件的源文件中的静态变量地址都是不相同的即视为不相同的变量这样可以防止变量重定义。也说明了静态全局变量将作用域限制在了文件内。 3. 可以通过readelf -a 可执行文件查看每个段情况。