C語言中的指針-記錄個人理解

1、直接使用指針的表達式,表示使用指針代表的內存地址. (指針存放的數據爲內存地址,如同int型變量存放的數據爲整數)

2、在指針表達式前加上符號:*,表示使用指針指向的值,也就是指針所代表的內存地址中存儲的值. (*也叫取值運算符或間接運算符,與之對應&爲地址運算符,放於正常變量之前可獲得變量在內存中的地址,也就是獲得一個指向這個變量的指針)

3、指針也有數據類型

4、假設int *opt,那麼opt++表示指向下一個整數位置的內存地址
,而不是讓opt所代表的內存地址在數值上+1;

示例:

int foo1=10;
int *foo2;
foo2=&foo1;
printf("*foo2:%d\n",*foo2);
printf("foo2:%d\n",foo2);
*foo2=11;
printf("*foo2:%d\n",*foo2);
printf("foo2:%d\n",foo2);

執行結果:

*foo2:10
foo2:559162276
*foo2:11
foo2:559162276

解釋:
第一行,聲明一個整型的變量foo1,其值爲10
第二行,聲明一個指針foo2,聲明指針要使用*符號
第三行,獲取變量foo1的內存地址,獲取變量的地址要使用&符號,並將內存地址賦給指針foo2,也就是讓foo2代表(指向)foo1的值在內存中的存儲位置
第四行,輸出*foo2,也就是輸出指針foo2所代表的內存地址中存儲的值
第五行,輸出foo2,也就是輸出指針foo2所代表的內存地址
第六行,讓指針foo2所代表的內存地址中存儲的值,變爲11(注意這裏並沒有修改指針foo2所代表的內存地址)
第七行,輸出*foo2,也就是輸出指針foo2所代表的內存地址中存儲的值
第八行,輸出foo2,也就是輸出指針foo2所代表的內存地址

注意執行結果,foo2所代表的內存地址中的值,通過*foo2=11;被修改後其內存地址並未發生改變,只是改變了該內存地址中存儲的值,而指針foo2依然代表原來的內存地址


《如有錯誤請指出》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章