C語言 - 指標(Pointer)

所謂的指標(Pointer)
就是記憶體的地址。
換句話說,把記憶體比喻成大樓,大樓裡每層都有其樓層編號(位址),而指標變數主要就是儲存某個東西在「第x樓」。
指標並沒有甚麼神奇的,它和int,float,char等一樣,可視為C語言的一種資料型別。

所謂int變數
其大小為4 bytes(假設硬體為32位元)
其內容存放2補數的整數數值
相關的運算符號有+,-,*(乘法),/,%,&(bitAND),|,^,~,<<,>>,=

所謂pointer變數
其大小為4 bytes(假設硬體為32位元)
其內容存放記憶體的地址(可視為unsigned int)
相關的運算符號有*(透過pointer取記憶體內容),&(取變數地址),=,+,-
 
指標的用法

&:取得變數的位址。

*:間接參考,指使用指標取得某個記憶體的內容。

範例:

int a=1, b=2, c;

int *p;   //宣告p是指向int的指標,英文說成p is a pointer to int

p = &a;  // &a是取a的地址(沒有&的話就變成取a的內容),=讓&a複製到p,也就是說現在p的內容為變數a的地址

b = *p;  //b的值被設定為指標p所指到記憶體的值(沒有*的話就變成取p的內容,而不是透過p去取a的內容了)

*p = 0;  //透過p將a的值被設定為0

p = &c;  //指標p現在指向c
已邀請:

要回復主題請先登入註冊