什麼是指標

它基本上是記憶體中變數的地址。它允許我們間接訪問變數。因此,使用指標我們可以通過解除引用指標來討論變數的地址(以及它的值)。當我們想要處理記憶體位置的地址而不是它的值時,它們很有用。

考慮 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 的地址傳遞為:而不是傳遞變數 ab 的值:

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 也只是建立的區域性指標變數,它具有變數 ab 的地址。