const與指針(c語言)

一般變量聲明成const,規(guī)定其值不被程序改變。

指針變量復(fù)雜一些。

它包括兩個方面:

1 指針變量包含的指針不被程序改變。

2 指針變量包含的指針指向的地址中的值不能通過指針來改變(可以通過它本身的變量名來改變)。

我們可以聲明成單獨具有1的功能,單獨具有2的功能,或者兼有1、2的功能。

假設(shè)前面有語句:

Char c=’X’;

1 指針變量包含的指針不被程序改變(const在后面)

char * const charPtr = &c;

這樣定義,說明charPtr中包含的指針,就是c的地址,不能再改變。

下面的語句就是錯誤的:

charPtr = &d;

2 指針變量包含的指針指向的地址中的值不能通過指針來改變(const在前面)

const char *charPtr = &c;

CharPtr指向的地址是c的地址,所以c的值就不能通過指針變量charPtr來改變。

下面的語句就是錯誤的:

*charPtr = 'Y';

但下面的語句是正確的:

c=’Y’;

把char *看成一個整體,則兩個定義的區(qū)別是const在char *的前面還是后面。

如果在后面,就是定義1,指針變量中存放的指針不能改變。

如果在前面,則指針變量指向的地址中的值,不能通過指針變量來改變。

也可以這樣來記:

定義中變量與*分離,則變量不能作左值。

定義中變量與*挨著,則*變量不能作左值。

3 同時具有兩個功能

const char * const *charPtr = &c;

里面有兩個*號和兩個const。

這樣來記:

兩個const夾著char *,然后變量前面還有一個*。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 指針是C語言中廣泛使用的一種數(shù)據(jù)類型。 運用指針編程是C語言最主要的風(fēng)格之一。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu); ...
    朱森閱讀 3,615評論 3 44
  • 1.語言中變量的實質(zhì) 要理解C指針,我認為一定要理解C中“變量”的存儲實質(zhì), 所以我就從“變量”這個東西開始講起吧...
    金巴多閱讀 1,979評論 0 9
  • 懷孕的女性往往是痛并快樂著的,對她們來說,在孕期選擇一個正確的睡眠姿勢十分重要,這不僅可以讓自己得到更好的休息,更...
    安忻睡眠門診閱讀 466評論 0 0
  • 剛剛下了一場不大不小的雨,電也停了,就坐在臺階上,靠著門看著雨發(fā)呆,又不由自主的哼唱起那首《一天到晚游泳的魚》,想...
    岳言言閱讀 557評論 0 1
  • 本分享來自羅輯思維200期——《古典,超級個體》第二部分 上一篇介紹了四種錯誤的心智模式,本篇介紹在快速變化、技術(shù)...
    王增利閱讀 214評論 0 0

友情鏈接更多精彩內(nèi)容