C语言初学--对全局变量和局部变量的理解

首先 在这之前我们应该要知道进程虚拟空间: 系统程序中访问的内存地址不是实际的物理内存地址,而是一个虚拟地址,然后由操作系统将这个虚拟地址映射到适当的物理内存地址上。

系统给了我们4个g的虚拟地址空间 其中一个1个g给了内核 3个g给了我们用户 而这三个g我们分为四个区

1 栈空间: 这里面有局部变量 函数形参 自动变量 、(这个是由系统管理 并且先进来的后出去 ,简称先进后出)

2堆空间: malloc calloc ralloc (先进先出,用户管理)

3全局数据区: bbs(未初始化的全局变量) ordata(常量) 静态数据区(初始化的全局变量 static修饰的变量)

4代码段


就全局变量和局部变量来讲 有以下几点不同 

第一个 作用域 前者文件结束前有效 后者只在当前函数有效

第二个 存储类型 前者在栈空间 后者在全局数据区

第三个 初始化 如果没有给他一个初值 前者会自动归零 后者回事一个垃圾值

第四个 如果两个变量同名 那么局部变量优先执行                               

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值