-
int *p=&a:定義的指針p是整型數(shù)據(jù),p++之后,p中的地址就會增加4個字節(jié)。
這就是指針偏移運(yùn)算,這種方式比CPU直接取地址效率還要高,所以設(shè)計程序都會盡可能地采取這種方式。
p+=3:將指針向下移動3格,如果p是整型,就移動12個字節(jié)。(等價于p[3])
數(shù)組和指針的本質(zhì)都是地址,所以*pa=array,相當(dāng)于將array數(shù)組的地址賦值給pa指針,這樣pa[1]的功能和array[1]的功能就沒有區(qū)別了。
數(shù)組是指針常量,指針是指針變量,數(shù)組的指向?qū)ο笫枪潭ú蛔兊模羔樧兞康闹赶驅(qū)ο髸淖?,所以這兩種指針還是有所差別的,指針能實現(xiàn)數(shù)組的功能,但是數(shù)組不一定能實現(xiàn)指針的功能。
查看全部 -
在函數(shù)名前加上星號,也可以調(diào)用函數(shù),一般用作回調(diào)函數(shù)使用。(第31行)
查看全部 -
全局變量儲存在數(shù)據(jù)段,先申明的地址小,后申明的地址大,調(diào)用的函數(shù)里的局部變量存放在棧中。
int整型占用4個字節(jié),變量的內(nèi)存地址只顯示第一個字節(jié)。
編譯后的程序,有可能不會將變量按照編寫代碼的順序存入內(nèi)存,因為gcc編譯時會對代碼進(jìn)行優(yōu)化,它會將同類型的變量在內(nèi)存中放到一起。
查看全部 -
調(diào)用的哪個函數(shù),運(yùn)行到函數(shù)的哪一行,變量的相關(guān)數(shù)據(jù)都被記錄保存到棧當(dāng)中了。
p &x:表示查看x變量所在的地址。
變量的本質(zhì)是地址,是內(nèi)存空間。
標(biāo)準(zhǔn)的編程語言不允許直接對內(nèi)存地址進(jìn)行操作,操作系統(tǒng)不允許。
指針也是一個變量類型,保存內(nèi)存地址。
查看全部 -
0x7fffffffffffffff以下的內(nèi)存由用戶操作,上面的內(nèi)存地址由操作系統(tǒng)自己調(diào)用。
代碼段放編譯后的程序,數(shù)據(jù)段放常量、變量,中間的綠色是自由可分配空間。
查看全部 -
一般用gcc指令編譯過的程序不能被用于gdb(一個Linux自帶的調(diào)試工具)調(diào)試,要用gcc -g xxx.c指令才可以。
用gdb調(diào)試要保存.c的源代碼,否則會有一些調(diào)試功能無法使用(比如調(diào)試時無法顯示行號)。
gdb ./xxx.out:表示調(diào)試xxx文件
在調(diào)試模式下(括號中含有g(shù)db),輸入l(或者list)顯示整個源代碼,輸入break打斷點(diǎn),輸入start開始調(diào)試(此時會顯示斷點(diǎn)在哪里),p x表示輸出x這個變量的值,n繼續(xù)下一步執(zhí)行,當(dāng)斷點(diǎn)打到調(diào)用的函數(shù)前可以用s指令來進(jìn)入函數(shù)內(nèi)部,bt查看函數(shù)堆棧(可以顯示當(dāng)前函數(shù)調(diào)用的堆棧情況), f n代表轉(zhuǎn)到相應(yīng)的標(biāo)號n堆棧進(jìn)行函數(shù)的調(diào)用。
本次練習(xí)案例中,change函數(shù)的a和b是形參,他們值的改變,不能代表main函數(shù)里的實參也改變了。
按q退出調(diào)試
查看全部 -
*a代表指針,&a代表取地址
查看全部 -
晚安查看全部
-
1
查看全部 -
內(nèi)存地址采用十六進(jìn)制數(shù)表示,十六進(jìn)制數(shù)都是以0x開頭,十六進(jìn)制數(shù)的每一位可以表示四個二進(jìn)制數(shù),因此對于一個32位系統(tǒng),其所有的內(nèi)存空間地址可以被八位十六進(jìn)制數(shù)表示。 每個十六進(jìn)制的內(nèi)存地址都指向一個字節(jié)的內(nèi)存空間,因此32位的系統(tǒng)總共可以配置2^10*2^10*2^10*2^2=4GB的內(nèi)存; 對于64位操作系統(tǒng),只有前48位編碼的地址用于程序存儲,后十六位為系統(tǒng)內(nèi)核保留使用的地址編碼段; 內(nèi)存地址從低到高依次編碼存儲代碼段(函數(shù)體指令等)、數(shù)據(jù)段(常量和全局變量)、堆、自由空間、棧。查看全部
-
內(nèi)存查看全部
-
什么?查看全部
-
你好啊查看全部
-
你好查看全部
-
如果想用GDB gcc -g *.c -o *.out查看全部
舉報