HOME ABOUT CONTACT

C/C++教學: 第十五課 - 指標(Pointer)

Rain August 17, 2024
Outline

1. 指標(Pointer)

2. 指標的基本範例

3. 指標的用途

指標top

初步介紹完函式之後,我想在介紹更進階的函式概念之前,先來介紹一下指標(Pointer)。從這裡開始會慢慢地有些難以理解,不過沒關係,我會盡可能地 讓你了解其中的原理。

什麼是指標呢? 指標是一種用以指向變數記憶體位址的資料型態,過去我們介紹的變數都是變數本身(變數的值),而非它在電腦或系統中的記憶體位址,因此 在程式語言中為了要取得變數的記憶體位址,就有了指標這樣的資料型態。

指標有非常多種用途,因此了解指標的原理,對後續的篇章不僅能有更好的理解,更可以運用自如。

指標的基本範例top

我們先來看看如何宣告一個指標,並且將它指向一個變數:


int main () {
    int *p;
    int a = 1;
    p = &a;
    cout << " address of variable a = " << p << ", value of variable a = " << *p << endl;
}
                        

首先我們宣告了一個指標p,在宣告指標時,其語法有兩種,一種是在宣告的資料型態後面接一個 "*",另一種是在變數名稱前接一個 "*"。

接著我們又宣告了一個變數a,其值等於1,然後用指標p去指向了變數a,這時候你會看到在變數a前多了一個 "&",這個意思就是取變數的位址,即為 "取址符號"

最後輸出打印的部分,如果直接像輸出變數值那樣來輸出p值的話,它會顯示的是記憶體的位址,以十六進制的方式輸出一個數字,因此若要真正打印出指標p指向的變數值,就需要一個 "*" 來打印。 這時候的 "*" 就變成了 "取值符號"

這些符號在邏輯運算子算術運算子也都有出現過,因此在理解上可能容易混淆,要特別注意區分的方式在於使用的時機點和符號的位置

指標的用途top

現在我們知道指標是指向變數記憶體位址,那麼它可以有什麼用途? 既然是牽涉到記憶體,那麼活用它就有以下幾個益處:

後續的篇章會先介紹第一和第三個特點,因為到目前為止只要懂指標的原理,再搭配前面篇章介紹的內容,就可以發揮這些特點, 而變數的記憶體配置則需要額外獨立出來介紹。

下一篇: 第十六課 - 傳值呼叫、傳址呼叫、傳參呼叫

Last updated:

Related Artical List

  1. C/C++教學: 第十三課 - 函式(Function)
  2. C/C++教學: 第十四課 - 函式(Function) part2
  3. C/C++教學: 第十六課 - 傳值呼叫、傳址呼叫、傳參呼叫

Article List