1. 程式人生 > 實用技巧 >C++指標常量與常量指標的區別?

C++指標常量與常量指標的區別?

參考來自:https://www.jb51.net/article/86519.htm

我們先回顧下,什麼是指標?什麼是常量?指標是一種特殊的變數,它裡面儲存的內容是記憶體地址。常量是指其裡面儲存的內容不能發生改變的量。明白了這兩個概念後,我們現在正式進入指標常量與常量指標。

1.指標常量與常量指標的概念

指標常量就是指標本身是常量,換句話說,就是指標裡面所儲存的內容(記憶體地址)是常量,不能改變。但是,記憶體地址所對應的內容是可以通過指標改變的。

常量指標就是指向常量的指標,換句話說,就是指標指向的是常量,它指向的內容不能發生改變,不能通過指標來修改它指向的內容。但是,指標自身不是常量,它自身的值可以改變,從而指向另一個常量。

2.指標常量與常量指標的宣告

指標常量的宣告:資料型別 * const 指標變數。

常量指標的宣告:資料型別 const * 指標變數 或者 const 資料型別 *指標變數。

常量指標常量的宣告:資料型別 const * const 指標變數 或者 const 資料型別 * const 指標變數。

3.指標常量與常量指標的使用

#include <iostream>

int main(int argc, const char * argv[]) {
    
    using namespace std;
    
    int i=5,j=6;
    //指標常量
    int
* const p1 = &i; *p1=500; //p1=&j; cout << "i= " << i << endl;//500 //常量指標 兩種寫法等價 //int const *p2 = &j; const int *p2 = &j; p2=&j; //*p2=600; cout << "j= " << j << endl;//6 //常量指標常量 通過地址/內容都不能改 int const* const p3 = &i; //
p3=&j; //*p3=1000; const int* const p4 = &i; //p4=&j; //*p4=1000; return 0; }

關於區分指標常量的一個小技巧:const後的內容為不能修改的。例如指標常量 int * const p = &a;則表示指標p的內容不能修改;常量指標int const *p = &a;則表示指標p所指向的內容不能修改。