[英]const qualifier in c++ in array of pointers
假設我有一個指向整數的指針數組(即每個元素都是一個指向int的指針)
int** ptrArray;
而且我想防止更改數組條目所指向的整數
我需要在哪里放置const?
1. const int ** ptrArray
2. int const ** ptrArray
3. int *const* ptrArray
4. int ** const ptrArray
有什么規定嗎? 像“第一個const保護數據”,“第二個const保護指針”等等?
const的位置后面有邏輯嗎? 放置在什么地方和它所保護的東西之間有什么聯系?
這對我來說是一個令人困惑的問題,如果有人可以給我提供任何指導或鏈接,我可以根據自己想要保護的內容來閱讀有關如何和在何處使用const的信息(如果我需要使用它,我真的很高興)。 3維數組中的const)
有什么規定嗎? 像“第一個const保護數據”,“第二個const保護指針”等等?
是: const
適用於左側,除非那里什么也沒有,否則適用於右側。
因此,這:
int const** ptrArray;
但是,在特殊情況下,這是等效的:
const int** ptrArray;
這意味着公共模式const int x;
實際上是 int const x;
變相
您從變量開始讀取修飾符。
例如
3. int *const* ptrArray
ptrArray
是一個變量。 *ptrArray
表示指向某物的指針 const* ptrArray
表示一個指向const* ptrArray
的指針 *const* ptrArray
表示一個指向某事物的常量指針 所以int *const* ptrArray;
聲明一個指向(非恆定) int
常量指針的指針
要理解所有示例,您需要了解的最終技術性是int const
和const int
是表示同一類型的兩種不同方式。
http://cdecl.org報告(或多或少,其中一個是無效的語法錯誤):
const int ** ptrArray: declare ptrArray as pointer to pointer to const int
int const ** ptrArray: declare ptrArray as pointer to pointer to const int
int * const * ptrArray: declare ptrArray as pointer to const pointer to int
int ** const ptrArray: declare ptrArray as const pointer to pointer to int
因此,您正在尋找以下任一項:
const int ** ptrArray
int const ** ptrArray
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.