指標常數和常數指標(無師自通)

2020-07-16 10:04:41
常數指標不能用於改變它指向的值;而指標常數在初始化之後就不能改變。

常數指標

前面已經介紹了如何將一個專案的地址傳遞到一個指標形參中,並且該指標可以用來修改作為實參傳遞的專案。有時需要將 const 專案的地址傳遞給指標。在這種情況下,必須把指標定義為指向 const 項的指標。例如,來看以下陣列定義:

const int SIZE = 6;
const double payRates[SIZE] = { 18.55, 17.45, 12.85, 14.97, 10.35, 18.89 };

在以上程式碼中,payRates 是一個 const double 的陣列,這意味著陣列中的每個元素都是 一個 const double,編譯器不會允許程式設計師編寫改變陣列內容的程式碼。如果想要將 payRates 陣列傳遞到一個指標形參中,那麼這個形參必須宣告為一個指向 const double 的指標。以下函數就顯示了這樣一個範例:
void displayPayRates(const double *rates, int size)
{
    // Set numeric output formatting
    cout << setprecision(2) << fixed << showpoint;
    // Display all the pay rates
    for (int count = 0; count < size; count++)
    {
        cout << "Pay rate for employee " << (count + 1)<< "is $" << *(rates + count) << endl;
    }
}
在函數頭中,請注意 rates 形參被定義為一個指向 const double 的指標。應該指出的是,const 這個單詞適用於 rates 指向的東西,而不是 rates 本身,如圖 1 所示。


圖 1 常數指標