您的位置:首页 > 其它

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

2017-06-12 18:21 274 查看
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变量用在性能实时性高的地方,以提高运行效率。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: