什麼是指標
它基本上是記憶體中變數的地址。它允許我們間接訪問變數。因此,使用指標我們可以通過解除引用指標來討論變數的地址(以及它的值)。當我們想要處理記憶體位置的地址而不是它的值時,它們很有用。
考慮 C 中的以下簡單交換函式:
void Swap(int firstVal, int secondVal)
{
int tempVal = firstVal;
firstVal = secondVal;
secondVal = tempVal;
}
現在在 main 中如果我們有以下程式碼:
.
.
int a = 9,b = 100;
swap(a,b);
//print a and b
.
.
a 和 b 的值將保持不變,這可以通過在 main 函式中列印它們的值來清楚。為了正確實現交換函式,我們將變數 a 和 b 的地址傳遞為:而不是傳遞變數 a
和 b
的值:
swap(&a,&b);
運算子 &
返回變數的地址。它使用如下:
int *address_of_a = &a;
int *address_of_a
,表示變數 address_of_a
指向(儲存地址)整數變數。
現在我們正確的交換功能將是:
void Swap(int *firstaddress, int *secondaddress)
{
int tempVal = *firstaddress;
*firsaddress = *secondaddress;
*secondaddress = tempVal;
}
現在互換的值將反映在 main 函式中:
int a = 9,b = 100;
swap(&a,&b);
//print
如果你沒有原始變數,你可以使用*
取消引用指標。假設在一個函式中你沒有原始變數但是它的地址在指標變數 int *x
中。我們可以簡單地訪問記憶體地址的值為 value = *x
;
如果我們沒有指標,我們就永遠無法模仿 C
中的引用傳遞,因為 C
是按值傳遞的。但請記住,我們只能模擬,因為即使我們使用指標,int *firstaddress, int *secondaddress
也只是建立的區域性指標變數,它具有變數 a
和 b
的地址。