指標變數是什麼,C++指標變數詳解

2020-07-16 10:04:41
像其他資料值一樣,記憶體地址或指標值可以儲存在適當型別的變數中。儲存地址的變數被稱為指標變數,但通常簡稱為指標

指標變數(例如 ptr) 的定義必須指定 ptr 將指向的資料型別。以下是一個例子:

int *ptr;

變數名前面的星號(*)表示 ptr 是一個指標變數,int 資料型別表示 ptr 只能用來指向或儲存整數變數的地址。這個定義讀為 "ptr 是一個指向 int 的指標",也可以將 *ptr 視為 "ptr 指向的變數"。

從這個角度上來說,剛剛給出的 ptr 的定義可以被理解為 "ptr 指向的型別為 int 的變數"。因為星號允許從指標傳遞到所指向的變數,所以稱之為間接運算子

有些程式設計師更喜歡在型別名稱後面新增星號來宣告指標,而不是在變數名稱旁邊。例如,上面顯示的宣告也可以寫成如下形式:

int* ptr;

這種宣告的風格可能在視覺上強化了 ptr 的資料型別不是 int,而是 int 指標的事實。兩種宣告的樣式都是正確的。

下面的程式演示了一個非常簡單的指標使用,儲存和列印另一個變數的地址。
//This program stores the address of a variable in a pointer.
#include <iostream>
using namespace std;
int main()
{
    int x = 25; // int variable
    int *ptr; // Pointer variable, can point to an int
    ptr = &x; // Store the address of x in ptr
    cout << "The value in x is " << x << endl;
    cout << "The address of x is " << ptr << endl;
    return 0;
}
程式輸出結果:

The value in x is 25
The address of x is 0x7e00

程式中,定義了兩個變數:x 和 ptr。變數 x 是一個 int,而 ptr 則是一個指向 int 的指標。變數 x 被初始化為 25,而 ptr 被賦值為 x 的地址,其語句如下:

ptr = &x;

圖 1 說明了 ptr 和 x 之間的關係。


圖 1 變數 x 和 ptr 指標之間的關係