9.3C語(yǔ)言指針復(fù)習(xí)_指向char和int的指針

視頻教程???
韋東山升級(jí)版全系列嵌入式免費(fèi)視頻_快速入門篇
日常中,我們把筆記寫到記事本中,記事本就相當(dāng)于一個(gè)載體(存儲(chǔ)筆記的內(nèi)容)。
C語(yǔ)言中有些變量,例如,char、int類型的變量,它們也需要一個(gè)載體,來(lái)存儲(chǔ)這些變量的值,這個(gè)載體就是內(nèi)存。
比如我們的電腦內(nèi)存有4GB內(nèi)存,也就是4*1024*1024*1024=4294967296字節(jié)。
我們可以把整個(gè)內(nèi)存想象成一串連續(xù)格子,每個(gè)格子(字節(jié))都可以放入一個(gè)數(shù)據(jù),如下圖所示。

每一個(gè)小格子都有一個(gè)編號(hào),小格子的編號(hào)從0開(kāi)始,我們可以通過(guò)讀取格子的編號(hào),得到格子里面的內(nèi)容。同理,我們根據(jù)內(nèi)存的變量的地址,來(lái)獲得其中的數(shù)據(jù)。
下面寫個(gè)小程序進(jìn)行測(cè)試,實(shí)例:?
point_test.c?

根據(jù)程序可以看出來(lái),函數(shù)的功能是輸出,char,int,char **類型所占據(jù)的字節(jié)數(shù);
編譯:
gcc -o pointer_test pointer_test.c
運(yùn)行應(yīng)用程序:
./pointer_test
結(jié)果:(我用的是64位的編譯器)?

可以看出在64位的機(jī)器中,用8個(gè)字節(jié)表示指針,我們可以測(cè)試一下用32位的機(jī)器編譯
編譯:
gcc -m32 -o pointer_test pointer_test.c ? //加上-m32:編譯成32位的機(jī)器碼
編譯可能會(huì)出現(xiàn)下面提示錯(cuò)誤:
/usr/include/features.h:374:25: fatal error: sys/cdefs.h: No such file or directory
解決錯(cuò)誤,安裝lib32readline-gplv2-dev
,執(zhí)行:
sudo apt-get install lib32readline-gplv2-dev
重新編譯:
gcc -m32 -o pointer_test pointer_test.c ? ?//沒(méi)有錯(cuò)誤
運(yùn)行生成的應(yīng)用程序:
./pointer_test
結(jié)果:?

可以看出編譯成32位的機(jī)器碼,指針就是用4個(gè)字節(jié)來(lái)存儲(chǔ)的,
總結(jié):
1. 所用變量不論是普通變量(char,int)還是指針變量,都存在內(nèi)存中。
2. 所用變量都可以保存某些值。
3. 怎么使用指針?
取值
移動(dòng)指針?
視頻教程???
韋東山升級(jí)版全系列嵌入式免費(fèi)視頻_快速入門篇
