日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

const char* p 、char* const p、const (char*) p 理解记忆

發布時間:2023/12/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 const char* p 、char* const p、const (char*) p 理解记忆 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


網上查找了很多理解記憶的方式,總結幾個對自己理解很有幫助的原則:

1:從右至左理解(應該和c++的語言特性有關)?

2:const修飾最近的一個單詞,‘*’除外。(還有一種理解const在‘*’左,修飾指針指向內容,在‘*’右,const修飾指針)

3:‘*’的理解(個人,不對再改):‘*’首先是一種描述,描述‘*’作用的變量,它的值是一個地址;然后‘*’有一個動作,將之后的修飾(即‘*’左的修飾)轉為描述上述地址所指向的空間。


const?char*?p:

從右至左:

p是一個變量;

‘*’:①p中記錄的是一個地址A②后面的修飾都在修飾這個地址A;

char :地址A存儲的是char類型

const:就近修飾?char,地址A存儲的是不能改變的char。

改變的理解:地址A的值就是一個char值,且不能改變;指向改地址的p可以再次指向另一個char類型的地址

即可以出現“?p = ……”,但不能出現 “ *p = ……”

補充:指針p指向的值可以是char類型,也可以是const?char類型;

? ?const限定的是不能通過“*p = ”去改變這個地址的值,無論這個地址是char還是const?char類型;

? 而若指針p本身指向的或是再次賦值指向的是一個char類型,則這個地址的值可通過其他獲取方式賦值改變,而‘*p’獲取到的值也會隨之改變;

具體的實驗代碼

#include #include using namespace std;int main() {int wait;const char i = 'x';char j = 'l';const char * p1 = &i; //可以改變地址,但不能通過 *p1= 改變的i值cout << *p1 << endl; // *p1 : x//*p1= 'a' //錯誤,不能通過 *p1= 去改變值p1 = &j;//正確,可以改變指向地址,新指向的是 char,而非 const char;cout << *p1 << endl; // *p1 : l//*p1= 'a' //錯誤,雖然j是char類型,但是const修飾,仍不能通過 *p1 去改變值j = 'a';//正確,j并不是constcout << *p1 << endl; // *p1 : a *p1隨之改變cin >> wait;return 0; }

char*?const?p:

從右至左:

p是一個變量;

const:就近修飾p,p中的值不能改變;

‘*’:①p中不能改變的值是一個地址A②后面的修飾都在修飾這個地址A;

char:地址A中存儲char類型值。

改變的理解:p變量的地址值不能改變,指針p只能指向這個地址,這個地址存儲的值是可以改變的

即不能出現“p = ……”,但可以出現“*p = ……”

補充:指針p只能指向char類型,不能指向const?char類型;

? const限定的是p的值不能變,即其指向地址不能變

#include #include using namespace std;int main() {int wait;char i = 'x';char j = 'l';char* const p2 = &i; //不可以改變地址,但可以通過 *p1= 改變i的值cout << *p2 << endl; // *p1 : x*p2 = 'a'; //正確,能通過 *p1= 去改變值cout << *p2 <<" "<<< endl; // *p1 : a i = a//p2 = &j;//錯誤,不能改變p2值cin >> wait;return 0; }

const (char*)?p:

網絡有資料對其理解和?char*?const?p一樣(char *作為一種新的類型);但是個人實驗該種聲明會直接報錯“不允許使用該類型名”。


網上查找了很多理解記憶的方式,總結幾個對自己理解很有幫助的原則:

總結

以上是生活随笔為你收集整理的const char* p 、char* const p、const (char*) p 理解记忆的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。