在C語言的學(xué)習(xí)過程中,常理不清指針(即一個變量的地址)和指針變量(專門用來存放另一變量的地址(指針)的變量)的關(guān)系,因此通過程序打印地址運(yùn)行結(jié)果,來分析加強(qiáng)理解。以此記錄學(xué)習(xí)過程中的心得,希望能幫到大家,感謝指正。
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供姜堰網(wǎng)站建設(shè)、姜堰做網(wǎng)站、姜堰網(wǎng)站設(shè)計、姜堰網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、姜堰企業(yè)網(wǎng)站模板建站服務(wù),十余年姜堰做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
代碼如下:
#includeint main()
{
int a=88,b=60 ;
int *p;
p=&a;//指向a的地址
printf("%p\n",&a);
printf("%#p",p);//以十六進(jìn)制的形式輸出
printf (" %p ",*p);
printf(" %p\n",&p);
printf("%d",p);
printf (" %d ",*p);
printf(" %d\n",&p);
p--;//指針移動指向b的地址
printf("%p\n",&b);
printf("%#p",p);
printf (" %p ",*p);
printf(" %p\n",&p);
printf("%d",p);
printf (" %d ",*p);
printf(" %d\n",&p);
return 0;
}
2.運(yùn)行結(jié)果代碼如下:
000000000061FE1C
0X000000000061FE1C 0000000000000058 000000000061FE10
6422044 88 6422032
000000000061FE18
0X000000000061FE18 000000000000003C 000000000061FE10
6422040 60 6422032
在指針*p=&a初始化后,p等同于&a即a的地址,在運(yùn)行過程中可以代換。%#p是輸出位0X開開頭的16進(jìn)制數(shù)。因此printf("%p\n",&a);? ? printf("%#p",p);本質(zhì)是一樣的。*p則是通過指針變量p存儲的a的地址,間接獲取a的值。*p=a,對數(shù)值%p等同于對數(shù)值以十六進(jìn)制位輸出。%d對p,*p,&p則是以十進(jìn)制形式分別輸出地址,值,地址。
p--,由于p是整型指針,p--減去int的4個字節(jié)剛好移動到b。
【注】1.這里發(fā)現(xiàn)后定義的變量b的地址要小于a的地址,這是因?yàn)閏語言中,先定義的數(shù)據(jù)先入棧,在棧的底部(不分配內(nèi)存),聲明結(jié)束后,b在棧頂,所以b先出棧,先為b分配內(nèi)存。因此b的地址小于a的地址。
?2.數(shù)據(jù)的地址位數(shù)和數(shù)據(jù)能存儲的位數(shù)無關(guān)。學(xué)習(xí)階段曾存在疑問(輸出的地址是16位,int是4字節(jié),即16進(jìn)制的4位代表一個字節(jié)(實(shí)際應(yīng)該是一個字節(jié)等于2位16進(jìn)制),一個字節(jié)等于八位二進(jìn)制,但八位二進(jìn)制不等于四位16進(jìn)制?)通過交流請教得知有關(guān)計算機(jī)組成原理,地址位數(shù)只取決于系統(tǒng),所有類型的指針?biāo)奸L度相同。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
文章題目:C指針與地址-創(chuàng)新互聯(lián)
地址分享:http://jinyejixie.com/article32/deoepc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、商城網(wǎng)站、外貿(mào)建站、虛擬主機(jī)、標(biāo)簽優(yōu)化、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容