日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

变量属性

發布時間:2023/12/13 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 变量属性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

變量屬性

C語言的變量屬性

  • C語言中的變量可以有自己的屬性
  • 在定義變量的時候加上“屬性”關鍵字
  • 屬性關鍵字指明變量的特有意義

auto關鍵字

  • auto即C語言中局部變量的默認屬性
  • auto表明將被修飾的變量存儲在棧上
  • 編譯器默認所有的局部變量都是auto的

register關鍵字

  • register關鍵字指明局部變量存儲在寄存器中
  • register只是請求寄存器變量,但不一定請求成功
  • register變量的必須是CPU寄存器可以接受的值
  • 不能用&運算符獲取register變量的地址
#include <stdio.h> register int g_val ; // error int main() {register char var;printf("0x%08x",&var); // errorreturn 0; }

static關鍵字

  • static關鍵字指明變量的“靜態”屬性
  • static關鍵同時具有“作用域限定符”的意義
    • static修飾的全局變量作用域只是聲明的文件中
    • static修飾的函數作用域只是聲明的文件中
#include <stdio.h> int g_var; // 全局變量,程序的任意地方都能訪問 static int g_vs; // 靜態全局變量,只有當前文件中可以訪問 int main() {int var; // 局部變量,在棧上分配空間static int s_var; // 靜態局部變量,在靜態數據區分配空間return 0; }

例子:

#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語言方式編譯
extern "C" {int f(int a,int b){return a + b;} }

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

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的变量属性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。