变量属性
變量屬性
C語言的變量屬性
- C語言中的變量可以有自己的屬性
- 在定義變量的時候加上“屬性”關鍵字
- 屬性關鍵字指明變量的特有意義
auto關鍵字
- auto即C語言中局部變量的默認屬性
- auto表明將被修飾的變量存儲在棧上
- 編譯器默認所有的局部變量都是auto的
register關鍵字
- register關鍵字指明局部變量存儲在寄存器中
- register只是請求寄存器變量,但不一定請求成功
- register變量的必須是CPU寄存器可以接受的值
- 不能用&運算符獲取register變量的地址
static關鍵字
- static關鍵字指明變量的“靜態”屬性
- static關鍵同時具有“作用域限定符”的意義
- static修飾的全局變量作用域只是聲明的文件中
- static修飾的函數作用域只是聲明的文件中
例子:
#include <stdio.h> int f1() {int r = 0;r++;return r; } int f2() {static int r = 0;r++;return r; } int main(int argc, char const *argv[]) {auto int i = 0;static int k = 0;register int j = 0;printf("%p\n",&i);printf("%p\n",&k);// printf("%p\n",&j); // errorfor(i=0;i<5;i++)printf("%d\n",f1());for(i=0;i<5;i++)printf("%d\n",f2());return 0; }結果:
extern 關鍵字
- extern 用于聲明“外部”定義的變量和函數
- extern 變量在文件的其他地方分配空間
- extern 函數在文件的其他地方定義
- extern 用于“告訴”編譯器用C語言方式編譯
static 和extern
#include <stdio.h> extern int g_i; int main() {printf("%d\n",g_i); } int g_i;總結:
- auto變量存儲在程序的棧中,默認屬性
- static 變量在程序靜態區中
- register變量請求存儲于CPU寄存器中
- extern變量在文件的其它地方分配空間
- extern 能夠指示編譯器按照標準C方式編譯程序
轉載于:https://www.cnblogs.com/yanyun888/p/6061235.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
- 上一篇: 知识点总结(什么是面向对象)
- 下一篇: 快捷键汇总