专题一关键字的剖析----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变量用在性能实时性高的地方,以提高运行效率。
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变量用在性能实时性高的地方,以提高运行效率。
相关文章推荐
- 专题一关键字的剖析----1.基本数据类型分析
- 专题一关键字的剖析----7.enum,typedef的分析
- 专题一关键字的剖析----3.if,switch,do,while,for分析
- 专题一关键字的剖析----5.const,volatile分析
- auto,static,register分析(属性关键字)
- 专题一关键字的剖析----6.struct,union的分析
- 专题一关键字的剖析----4.goto,void,extern,sizeof的分析
- 【C语言复习(一)】auto、static、register、const、volatile关键字的分析
- 属性关键字 auto,register,static分析
- 说明以下关键字的作用 auto static register const volatile extern
- 关键字:auto、static、register、const、volatile 、extern 总结
- 11.读c语言深度剖析 -- auto register static sizeof signed、unsigned
- C关键字之——auto,register,static
- 关键字:auto、static、register、const、volatile 、extern 总结
- C/C++中涉及存储方式的关键字:auto,static,register,extern2009-01-22 11:23auto关键字:
- C语音关键字auto,static,register区别
- C/C++中涉及存储方式的关键字:auto,static,register,extern
- 关键字:auto、static、register、const、volatile 、extern 总结
- auto,register和static分析
- C语言中关键字auto、static、register、const、volatile、extern的作用