C語言中分辨const指標的簡單方法

2021-09-01 03:15:19 字數 475 閱讀 8772

在《c專家程式設計》中看到const的那段,發現儘管以前花時間去研究過這個問題,但現在還是不清楚,因此記錄下來我的一些想法,方便以後查閱。

const和指標在一起的宣告會出現幾種不同的順序:

const int * num;

int const * num;

int * const num;

其中,1和2的宣告都是「指標所指的物件是唯讀的」,而3指「指標自身是唯讀的」。

為什麼會這樣呢?

如果將int拿走,那麼1和2的宣告其實是一樣的,都是const *,而3的宣告則是* const。

*操作符是從右向左結合的順序,那麼const *中,const限定的是(*num),(*num)是指標所指向的物件,被限定為唯讀;而在* const num中const直接限定num,num是指標自身,因此指標被限定為唯讀。

歸根結底,遇到const指標時,將const後面部分用括號括起來,看看是物件還是指標就可分辨了。

C語言中const與指標的指標

主題源自 c專家程式設計 第19頁,以下是我的理解。先看個例子 include 例子1 void foo1 const char p int main void 這個簡單的程式在編譯的時候會報個error或warning,原因是原型不匹配。為什麼這樣?我們在像下面例子2這樣使用時明明一點問題都沒有。...

C語言中Const指標變數(常指標)

c語言中,指標是最難理解的一部分,尤其是const指標變數。include stdafx.h int main int argc,char argv 定義基本型別的const變數,const 位置在哪兒都可以 const int x 2,y 3 兩個常量 定義乙個非const變數 int z 3 乙...

C語言中的const

c語言的中的const,代表的含義是 不可改變的變數 或者可以成為 偽常量 c 中 const,被稱為 乙個有型別描述的常量 const int liv num 10 liv num 18 error 因為liv num 被const修飾不可被直接賦值 那麼,我為什麼說是 偽常量 我們知道在c中給變...