在linux中寫乙個程式,裡面全域性變數,區域性變數,static,const,常數,陣列,輸出這些變數的位址(包括賦值的和沒有賦值的,各類資料型別);
**如下:
#include int a;
int b = 1;
int const c = 1;
int const x;
static int d;
static int e = 1;
char str[3];
char str1 = ;
int main()
; printf("uninit global variable addr%p\n",&a);
printf("init global variable addr%p\n",&b);
printf("init const global variable addr%p\n",&c);
printf("uninit const global variable addr%p\n",&x);
printf("uninit static global variable addr%p\n",&d);
printf("init static global variable addr%p\n",&e);
printf("uninit global array addr%p\n",str);
printf("init global array addr%p\n",str1);
printf("uninit local variable addr%p\n",f);
printf("init local variable addr%p\n",g);
printf("init const local variable addr%p\n",h);
printf("uninit const local variable addr%p\n",y);
printf("uninit static local variable addr%p\n",j);
printf("init static local variable addr%p\n",k);
printf("uninit local array addr%p\n",str2);
printf("init local array addr%p\n",str3);
return 0;
}
結果如下所示:
由結果可以看出:
常全域性變數在乙個區域;
區域性變數、陣列(包括已初始化和未初始化)、常區域性變數,在同乙個區域;
靜態區域性變數、常全域性變數、靜態全域性變數、全域性陣列(包括已初始化和未初始化)在一片區域,但是已經初始化的在未初始化的之前。
指標變數與變數位址
一 基本概念 儲存單元一般應具有儲存 資料和讀寫資料的功能,以8位二進位製作為乙個儲存單元,也就是乙個位元組。每個單元有乙個位址,是乙個整數 編碼,可以表示為 二進位制整數。程式中的變數和主儲存器的儲存單元相對應。變數的名字對應著儲存單元的位址,變數內容對應著 單元所儲存的資料。儲存位址一般用十六進...
區域性變數位址的返回
char fun 這個函式的返回值?以及這個函式在棧上的儲存布局 include include include char fun int main int argc,const char argv 就函式而言,返回區域性變數的位址這種做法是錯誤的,但是這個函式不管是在vs還是在gcc上編譯時都只會...
筆記 c c 如何列印變數位址
c開發中有些情況需要比較特殊,需要判斷兩個變數是否是同乙個變數,最快捷的方式就是判斷兩個變數的位址是否一致。微軟的virtual studio就可以設定斷點然後檢視變數的位址,linux開發也可以用gdb來設定斷點,當然這些都是除錯的方式,我們也可以通過printf函式來列印變數位址。printf函...