c语言变量是如何存储,C语言变量存储

C语言中的变量按照生存周期来区分,可以分为静态存储和动态存储。

一、静态存储

静态存储是在程序运行过程中分配固定的存储空间。静态存储区中存放了整个程序运行过程中的都存在的变量,如全局变量,因此静态存储区也叫做全局存储区。

二、动态存储

动态存储则是在程序运行过程中根据需要进行动态分配存储空间。动态存储区中存放的变量是根据程序运行的需要进行建立和释放的,如函数形参,自动变量,函数调用时的现场保护和返回地址等。

C语言中存储类别分为四类:自动(auto)、静态(static)、寄存器(register)、外部(extern)。

一、自动存储(auto)

用关键字auto定义的变量为自动变量,auto不写则默认为自动存储。自动存储类别属于动态存储方式。

auto int a, b; //定义自动变量a, b

二、静态存储(static)

用static修饰的变量,如果是定义在函数内部,称之为静态局部变量;如果是定义在函数外部,称之为静态外部变量。

static int a; //定义静态变量a

注意,静态局部变量属于静态存储类别,在静态存储区内分配存储单元,在整个程序运行期间都不释放。静态局部变量在编译时赋初值,即只赋初值一次。

三、寄存器变量(register)

为了提高效率,C语言允许将局部变量的值放在CPU的寄存器中,称之为“寄存器变量”,用关键字register进行声明。

register int a; //定义寄存器变量a

注意,只有局部自动变量和形式参数可以作为寄存器变量,局部静态变量不能定义为寄存器变量;一个计算机系统中的寄存器数量有限,因此不能定义任意多个寄存器变量。

四、外部变量(extern)

用extern声明的变量为外部变量,外部变量的意义是某函数可以调用在该函数之后定义的变量。如:

#include

int main()

{

extern int a; //声明此处使用的是外部全局变量

printf("a的值为%d\n", a);

return 0;

}

int a = 5;

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值