Skip to content

[C++] 基本教學 06: 指標、參考符號

Last Updated on 2021-05-03 by Clay

指標Pointer)是 C++ 中一種儲存變數記憶體位址的資料型態,經常用於構建 Linked List 之類的結構或是用來傳遞大資料的記憶體位址從而提升程式效率。是使用『星號』(*)來宣告。

參考Reference)則像是建立物件的另一個別名一般,我們對參考的操作會像是直接操作原本的物件一樣。

以下直接紀錄幾個簡單的小程式,示範如何使用指標以及參考。


指標(Pointer)

指標的意義說穿了,其實就只是儲存記憶體位址罷了。並沒有許多人想像得那麼複雜。

#include <iostream>
#include <string>
using namespace std;

int main() {
    int n = 10;
    cout << "n: " << n << endl;
    cout << "n adress: " << &n << endl << endl;

    // Pointer
    int *p = &n;
    cout << "*p: " << *p << endl;
    cout << "p: " << p << endl << endl;

    // Add
    *p += 10;
    cout << "n: " << n << endl;
    cout << "n address: " << &n << endl;
    cout << "p: " << p << endl;

    return 0;
}



Output:

n: 10
n adress: 0x7ffee7423a98

*p: 10
p: 0x7ffee7423a98

n: 20
n address: 0x7ffee7423a98
p: 0x7ffee7423a98

n 是一個 int 資料型態的變數,&n 則是該變數的記憶體位址。而我們可以使用 int *p 或是 int* p 來儲存此一記憶體位址。

而我們同樣可以透過操作 *p 來改變變數 n 的值。

只是透過這樣簡單的範例,其實我們很難明白為何要在程式中使用指標。要一直到自己去搭建 Linked List,並明白不使用連續記憶體位址的好處時,才能了解指標的威力。


參考(Reference)

參考就如何前言所述,就像一個變數的別名一樣。我們同樣也可以透過這個參考的變數影響到本來的變數值。

#include <iostream>
#include <string>
using namespace std;

int main() {
    int n = 10;
    cout << "n: " << n << endl << endl;

    // Reference
    int &r = n;
    cout << "r: " << r << endl << endl;

    // Add
    r += 10;
    cout << "n: " << n << endl;
    cout << "r: " << r << endl;

    return 0;
}



Output:

n: 10

r: 10

n: 20
r: 20

References


Read More

Tags:

Leave a Reply