变量的存储类型——来自一个C语言基础差到被嘲讽的人的C语言复习篇1!!!我是一个干货一族

基础变量类型:auto、static、register
未声明时默认为auto类型
auto 数据类型说明符 变量名 //外部变量
静态存储static编译时就分配空间,静态局部变量是在编译时赋初值的,即只赋初值一次,在程序运行期间它已有初值,在程序运行结束保留最后一次的赋值结果
static 数据类型说明符 变量名 //外部变量
可把通用寄存器分配给最频繁访问的变量,只有局部自动变量和形参可以作为寄存器变量,多出计算机寄存器数目的会变为自动类型变量,受硬件寄存器长度的限制,所以寄存器变量只能是char\int\short或指针型
register 数据类型说明符 变量名 //外部变量

非静态全局变量和外部变量
非静态全局变量:没有用关键字static来限定的全局变量可以在其他文件中访问,其他文件对他访问之前用外部变量声明语句对已定义过的非静态全局变量进行外部引用声明如下:
extern 数据类型说明符 变量名 //外部变量

非静态全局变量和外部变量的声明不同处:
同名变量的声明只能有一次,但同名外部变量的声明可以有多次
位置不同,非静态全局变量的定义在所有函数之外,外部变量声明可在函数内声明
静态全局变量和非静态全局变量的区别:
静态全局变量的作用域只限定在定义该变量的源文件
非静态全局变量的作用域可以是整个程序的所有源文件(存储在静态存储区)
注:由于非静态全局变量可在其他源文件中访问,多个源文件都能修改它的值,互相影响比较大。

其它分类 存储区 函数结束时变量的值 未初始化的变量默认值 作用域
自动局部变量 动态区 消失 不定 本函数
静态局部变量 静态区 保存 0 本函数
寄存器变量 寄存器 消失 不定 本函数
静态全局变量 静态区 保存 0 本文件
非静态全局变量 静态区 保存 0 整个程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值