檢視變數位址

2021-07-23 22:09:48 字數 1435 閱讀 8520

在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函...