C語言查漏補缺——指針

        本節將詳細分析指針。
ide


1、指針函數

     指針實際上也是一個變量,不過這個變量不同凡響的是,他存的值是一個地址。
spa

    int a = 4;
    int* p = &a;

    這段代碼的內存如圖所示
指針

image.png


        從圖中能夠看出,p本質上也是一個變量,只是這個變量比較特殊,他的值是a變量的地址。
blog

        這個時候,咱們經過*號就能夠訪問p變量存儲的這個地址所保存的值,這句話讀起來可能有點繞。簡單來講,就是*p這樣作之後,讀到的其實是a的值,也就是說*p ==> 4。
內存


 2、傳值調用與傳址調用
it

        若是函數體內部,須要改變實參的時候,就須要經過指針來完成。class

        考慮這樣一個問題,使用一個函數,完成兩個數的交換。這個基本上是我們學C語言最開始就會寫的函數。
變量

int swap(int* a, int* b)
{
    int c = *a;
    *a = *b;
    *b = c;
}

        函數在進行傳值調用的時候,不會改變實參的值,只能在函數內部利用實參的值。
im


3、常量指針

        以前咱們已經討論過了const關鍵字,這裏將const關鍵字和指針結合。主要存在如下幾點須要注意

const int* p;            //p可變,p指向的內容不可變
int cosnt* p;            //跟上一次同樣,沒有區別
int* const p;            //p不可變,p指向的內容可變
const int* const p;      //p不可變,p指向的內容也不可變

        對於記憶const跟指針的結合,有個口訣,左數右指。

相關文章
相關標籤/搜索