C 中宣告 const 乙個指標到底宣告的是什麼?

時間 2021-06-01 15:08:06

1樓:二圈妹

要知道指向常量的指標(pointer to const)常量指標(const pointer)的區別

僅僅要求這個指標指向常量,我們可以修改指標的指向,甚至可以讓它指向相應的非常量資料型別

常量指標是指向的位置不變,它不一定需要指向常量。

更詳細的:

二圈妹:const 搭配指標和引用

2樓:

C++ Primer:

We indicate that the pointer is const by putting the const after the *. This placement indicates that it is the pointer, not the pointed-to type.

就是說,const放到*後面表示指標本身是const的,否者就是指標指向的物件時const的。另外還有top-level const和low-level const這兩個概念,前者是指指標是const的,後者是指指向的物件是const的。

還有一種分析方法,現在的編譯器都是從左向右分析修飾符的:const int * p,那麼const修飾範圍是*p,而int * const p的const修飾範圍是p。

3樓:

在判斷const作用範圍的時候,你可以把指標宣告這麼理解const int * p;

可以理解為*p的型別是const int,那麼指標指向的內容是個const,而指標本身不是const

int * const p;

可以理解為*const p的型別是int,那麼指標本身被限定為const,而它指向的內容是普通的int

4樓:Leon

const作為修飾符,搞清楚這個修飾的是什麼是很重要的。而且const在C++裡面賦予了太多的功能,不是簡單幾句話就能說明白的。

標準文件上寫的又太羅嗦,建議直接回去看書。書上沒說明白的話,換本書。

至少要知道 const int *p; int* const p; const int* cont p; int const *p;到底有什麼區別c++;裡面const基本上就算入門了。

好吧,還是回到題目,題目裡面的const int *p;修飾的是型別,表示p指向的物件不可變,而不是p不可變。不信你 *p=6;一下你看編譯器報不報錯。

C 中define乙個常量和const是否完全相同?

scientificworld NO.define是直接定義巨集,在預處理階段你如果看一下輸出檔案就會發現裡面肯定已經沒有乙個 define了,同時那些用到了這個巨集的地方也已經被替換掉了。包括像 if,ifdef,ifndef,else,endif,progma這些也沒了 const是常量,不會被...

C 關於 const 引用的乙個小問題?

你需要把const和型別放在一起看,也就是 const int 而不是const int 也就是說,你這裡是乙個指向型別為 const int 的指標,而不是乙個被const修飾過的 int 那反過來說,如果我們需要乙個被const修飾的 int 要怎麼辦呢?答案是把const寫在後面,也就是int...

C 語言宣告指標的時候 int p 到底是什麼意思?

這個回答挺到位的呢,剛剛看的,分享下 虛實道長 我憑感覺回答 1.反對譚浩強的教材誤導。c的優勢在於指標。乙個函式,有了指標,再也不用看返回值臉色了。不再受限於返回值。如果說函式的輸出來自於返回值,那你的函式原型得多複雜?介面得多易變?函式的返回值是void一點關係都沒有,都通過指標來控制顯示 交換...