簡體   English   中英

指針數組中C ++中的const限定符

[英]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 constconst 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.

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