您好,登錄后才能下訂單哦!
本節(jié)將詳細(xì)分析指針。
一、指針
指針實(shí)際上也是一個(gè)變量,不過這個(gè)變量與眾不同的是,他存的值是一個(gè)地址。
int a = 4; int* p = &a;
這段代碼的內(nèi)存如圖所示
從圖中可以看出,p本質(zhì)上也是一個(gè)變量,只是這個(gè)變量比較特殊,他的值是a變量的地址。
這個(gè)時(shí)候,我們通過*號(hào)就可以訪問p變量存儲(chǔ)的這個(gè)地址所保存的值,這句話讀起來可能有點(diǎn)繞。簡(jiǎn)單來說,就是*p這樣做以后,讀到的實(shí)際上是a的值,也就是說*p ==> 4。
二、傳值調(diào)用與傳址調(diào)用
如果函數(shù)體內(nèi)部,需要改變實(shí)參的時(shí)候,就需要通過指針來完成。
考慮這樣一個(gè)問題,使用一個(gè)函數(shù),完成兩個(gè)數(shù)的交換。這個(gè)基本上是咱們學(xué)C語(yǔ)言最開始就會(huì)寫的函數(shù)。
int swap(int* a, int* b) { int c = *a; *a = *b; *b = c; }
函數(shù)在進(jìn)行傳值調(diào)用的時(shí)候,不會(huì)改變實(shí)參的值,只能在函數(shù)內(nèi)部利用實(shí)參的值。
三、常量指針
之前我們已經(jīng)討論過了const關(guān)鍵字,這里將const關(guān)鍵字和指針結(jié)合。主要存在以下幾點(diǎn)需要注意
const int* p; //p可變,p指向的內(nèi)容不可變 int cosnt* p; //跟上一次一樣,沒有區(qū)別 int* const p; //p不可變,p指向的內(nèi)容可變 const int* const p; //p不可變,p指向的內(nèi)容也不可變
對(duì)于記憶const跟指針的結(jié)合,有個(gè)口訣,左數(shù)右指。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。