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依然代表原來的內存地址