C/C++指針和取地址的方法
先看下面的程序:
void main()
{
int a = 100;
int *ap = &a;
printf("%p\n",&a);//輸出:002AF744
printf("%p\n",ap);//輸出:002AF744
printf("%d\n",*ap);//輸出:100
printf("%p\n",&ap);//輸出:002AF738
printf("%p\n",&*ap);//輸出:002AF744
scanf("%d");
}
1. printf("%d\n",&a);//輸出:002AF744
這一句輸出的是變量a的地址,毋庸置疑。
2. printf("%d\n",ap);//輸出:002AF744
這一句是輸出的指針的值,與的一個(gè)輸出相同,也就是說(shuō)指針的值是指針?biāo)赶虻淖兞康牡刂?/P>
3. printf("%d\n",*ap);//輸出:100
在指針變量的前面加了一個(gè)*號(hào),不加星號(hào)的ap指針是指向變量a的地址,而加了*真變成了指針ap所指向的變量a的內(nèi)容,
所以,我們可以理解為*號(hào)是獲取指針變量所指向的地址所存放的內(nèi)容的操作。
4. printf("%d\n",&ap);//輸出:002AF738
這一句(同1)是取得指針變量ap的地址
5. printf("%d\n",&*ap);//輸出:002AF744
這一句根據(jù)第3點(diǎn)的分析,*ap指向的是變量a的內(nèi)容,而&*ap即是獲取變量a的內(nèi)容的地址,即是變量a的地址所以輸出內(nèi)容同(1)
相關(guān)文章
vscode調(diào)試使用make編譯的項(xiàng)目
VSCode本身是一個(gè)代碼編輯器,自帶的編譯功能比較弱,本文主要介紹了vscode調(diào)試使用make編譯的項(xiàng)目,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10
C語(yǔ)言課程設(shè)計(jì)之抽獎(jiǎng)系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言課程設(shè)計(jì)之抽獎(jiǎng)系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
C++ LeetCode1796字符串中第二大數(shù)字
這篇文章主要為大家介紹了C++ LeetCode1796字符串中第二大數(shù)字示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
VC++中HTControl控件類的CHTSlider控制桿控件類簡(jiǎn)介
這篇文章主要介紹了VC++中HTControl控件類的CHTSlider控制桿控件類,需要的朋友可以參考下2014-08-08
C語(yǔ)言實(shí)現(xiàn)去除字符串中空格的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇C語(yǔ)言實(shí)現(xiàn)去除字符串中空格的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05

