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