博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言变量的类型和存储位置
阅读量:7212 次
发布时间:2019-06-29

本文共 795 字,大约阅读时间需要 2 分钟。

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

 

转载地址:http://squym.baihongyu.com/

你可能感兴趣的文章
.Net Core微服务系列--开篇
查看>>
Go语言学习笔记(二)十分钟上手
查看>>
Usage of pmake
查看>>
[译]Professional ASP.NET MVC3(01)-Chapter 1:Getting Started(上)
查看>>
1、时间、FHS 学习笔记
查看>>
mysql基本知识学习
查看>>
Exchange 2010 (三) HUB NLB部署
查看>>
lnmp环境安装-源代码编译
查看>>
java模板上传
查看>>
apache、nginx开启pathinfo
查看>>
Flask+Gunicorn+Gevent+Supervisor+Nginx生产环境部署
查看>>
Linux通配符知识深度讲解
查看>>
AD-禁用账户命令 Disable-ADAccount
查看>>
如何修改eclipse下tomcat的工程所生成的项目文件的名称
查看>>
两位数相乘【口算宝典】
查看>>
php代码执行时间
查看>>
Exchange 2013 创建新用户
查看>>
mikrotik NAT设置(winbox)
查看>>
mysql5.5主从同步复制配置
查看>>
Press(del)Enter BIOS Setup,<F12>Display Boot Menu
查看>>