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