繁体   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