[英]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) int
的const
指針,如下所示:
int* const cp = &i;
而且,對於指向const int
的const
指針,您需要兩次const
限定符:
const int* const cp = &ci;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.