专题一关键字的剖析----2.aoto,register,static分析

C语言中的变量可以有自己的属性,在定义变量的时候可以同时加上“属性”关键字,来指明该变量拥有特殊的意义。
C语言中所有局部变量默认属性为aoto,在程序的栈上分配空间。


statice属性

Static指明变量的“静态”属性,存储在程序的静态区中;static同时具有“作用域限定符”的意义,修饰全局变量或函数时其作用域只在声明的文件中,来限定全局变量或者函数的作用范围。


Register属性

Register指明将变量存储于寄存器中(一般的变量存储在内存中)。
Register只是向编译器请求寄存器变量,但不一定请求成功;最终以编译器的决定为准。

Register变量必须是CPU寄存器可以接受的值(硬件的CPU只能支持4字节的变量,如果申请8字节变量那就不行)。

注意:不能用&运算符获取register变量的地址(register变量根本不在内存中)


实例验证程序:

#include<stdio.h>
aoto int g=0;
register int m=0;
void main()
{
    register int n=0;
    printf(“%0x\n”,&n);
}
//gcc:  error: file-scope declaration of  ’g’ specifies  ‘aoto’
//gcc:  error: register name not specified for  ‘m’ 
//gcc:  error:address of register variable ‘j’ requested

小结:

全局变量不能为register,因为如果寄存器全部被占用,CPU将无法工作;

register变量用在性能实时性高的地方,以提高运行效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值