簡體   English   中英

“指向 const int 的指針”是否與“const int*”相同

[英]Is “pointer to const int” same as “ const int* ”

我正在閱讀有關指針的內容,但其中一部分感到困惑。 給出的代碼如下:

int i=0;
const int ci = i;
auto *p = &ci;`

現在的問題是p的類型是什么? 我認為p將是指向 const int的指針。 這個對嗎? 如果是,這是否等於const int *? 指向const int的指針是否與const int*相同?

在 C++ 中, const關鍵字一般適用於其左側的類型部分。

所以int const*是指向常量 integer 的指針,而int*const是指向非常量 integer 的常量指針。

您的示例中p的類型是int const*

const放在右側的習慣稱為東部 const。

現在“const應用於左側”有一個例外; 當左邊沒有任何東西時,它適用於右邊。 這個令人困惑的異常意味着const int*int const* 但是using X=int*; const X using X=int*; const X變為int*const

const放在左邊的習慣,以及由此產生的混亂,被稱為 west const。

簡而言之,答案是肯定的,除非您添加別名。

我認為 p 將是指向 const int的指針。

是的,這就是p的樣子。

如果是,這是否等於const int*

是: const int* p; 正是您將p定義為指向const int的指針的方式。

萬一您想知道,您可以定義/初始化一個指向(非 const) intconst指針,如下所示:

int* const cp = &i;

而且,對於指向const intconst指針,您需要兩次const限定符:

const int* const cp = &ci;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM