指標是儲存「另一個變數位址」的變數。&x 取得變數 x 的位址,其型別為「指向 x 型別的指標」。例如 int *ip 宣告一個指向 int 的指標變數 ip。
int i, *ip = &i; // ip 指向 i
int *p1, *p2; // 兩個指向 int 的指標
* 在宣告中表示「這是指標」int、double 等)指定指標指向的資料型別NULL(值為 0)int i = 200, x;
int *ip = &i;
x = *ip; // *ip 存取 ip 所指位址的值,等同 x = i
* 為間接存取運算子(解參考)。透過指標存取比直接存取稍慢,但提供靈活性:同一指標可在執行期指向不同變數。
int i = 'a', j = 'b';
int *p1 = &i, *p2 = &j;
p2 = p1; // p2 現在也指向 i
*p2 = *p1; // 將 p1 指向的值複製到 p2 指向的位置(此處等同 j = i)
區分 p2 = p1(改變指標指向)與 *p2 = *p1(複製資料)的差異。
int x, y, *px = &x;
y = *px + 5; // x + 5 → y
y = ++*px; // x 加 1 後存入 y
y = *px++; // 先取值再遞增指標(相當於 y = *px; px++)