9.3.1指向char和int的指針_實例0

視頻教程???
實例0
步驟一

編譯:
gcc -m32 -o pointer_test pointer_test.c
運行:
./pointer_test
結果:

從運行的結果我們可知,變量c的地址編號(即地址)是0xffaaa2b7,指針變量pc的地址編號是0xffaaa2b8,如下圖所示,編譯成32位的機器碼,字符類型占用一個字節(jié),指針類型就是用4個字節(jié)來存儲的。

步驟二
我們把test0()函數(shù)里面的變量保存(賦予)一些值,假如這些變量不保存數(shù)據的話,那么存儲該變量的地址空間就會白白浪費,就相當于買個房子不住,就會白白浪費掉。
我們把上面程序中的test0()函數(shù)里面的字符變量c,指針變量pc進行賦值。
c ?= ‘A’; ?//把字符‘A’賦值給字符變量c?
pc = &c; ?//把字符變量c的地址賦值給指針變量pc
然后把賦值后變量的值打印出來
printf("c ?=%c\n",c);?
printf("pc =%p\n",pc)
編譯:
gcc -m32 -o pointer_test pointer_test.c
運行:
./pointer_test
結果:?

從運行的結構來看字符變量和指針變量的地址編號發(fā)成了變化,所以在程序重新運行時,變量的地址,具有不確定性,字符變量c存儲的內容是字符‘A’,指針變量pc存儲的內容是0xffb009b7(用四個字節(jié)來存儲)。
由于內存的存儲方式是,小端模式:低字節(jié)的數(shù)據放在低地址,高字節(jié)的數(shù)據放在高地址。在內存中的存儲格式如下圖所示。

步驟三
我們辛辛苦苦定義的指針類型變量,我們要把他用起來了,下面我們來分析一下,用指針來取值,‘*’:表示取指針變量存儲地址的數(shù)據。
我們在test0()函數(shù)里面添加如下代碼:?
printf("*pc =%c\n",*pc);
printf("//=================\n");
編譯:
gcc -m32 -o pointer_test pointer_test.c
運行:
./pointer_test
結果:?

指針變量pc存儲的內容是是字符變量c的地址,所以*pc就想相當于取字符變量c的內容。如圖

視頻教程???
