C語言指針入門需要掌握的兩個概念就是取地址&和解引用*,下面我們按例子來理解這兩個符號的使用。
int main() { int a = 0; int* pa = &a;//取地址操作:將int變量a的地址放入pa指針中。 *pa = 1;//解引用操作,使用*pa得到了int指針pa指向變量a的值。然后我們將它改成1. printf("%d ", a);//測試打印,結果為1. }
這里我們仔細看一下。
1.聲明int類型的變量a,初始化為0;
2.取a的地址,存入int指針pa中,注意,這里int *pa 就只是聲明的一個int類型的指針用於存放我們取的a的地址。后面的解引用操作雖然符號一樣,但理解上不一樣。
int main() { int a = 0; int* pa = &a;//取地址操作:將int變量a的地址放入pa指針中。 printf("%d ", *pa);//測試打印,結果為0; }
3.*pa:解引用操作,直接通過pa中的地址使用 * (解引用操作)獲取到a的值。可以看看上面的代碼,自己跑一下。這里*pa打印出來直接就是我們第一個聲明的a的值,這就是解引用操作:通過地址直接獲取相應變量中存儲的值。所以這里打印的值為0.
4.我們這里解引用之后多了一個賦值操作,*pa=1,因此,a中的變量的值被直接修改為1,打印結果為1。這一步很關鍵。
取地址是取出指定變量的地址,通常需要一個相應類型的指針變量來存儲。這個時候,這個指針里面就存儲的是我們目標變量的地址。這時,取地址操作就已經完成。解引用就是順着這個地址去取值,或者是去修改值,就像上面的例子所說的那樣。這個過程稍顯晦澀難懂,還請讀者大大細細思考,后面我會繼續更新指針相關的內容。
