[英]c++ const for pointer to pointer
指向常量 int 的指针。 我可以更改指针,但我可能不会更改值:
const int* a;
一个指向 int 的常量指针。 我可能不会更改指针,但我可能会更改变量的值:
int* const a;
现在,如果我正在处理指向指针的指针,情况会如何?
int** a;
我如何能:
a) 声明一个指向非 const 指针的 const 指针,指向非 const int
b) 声明一个非常量指针,指向一个非常量 int 的 const 指针
c) 声明一个指向 const int 的非常量指针的非常量指针?
a) 声明一个指向非
const
指向非const
int
的指针的const
指针
int ** const a = nullptr;
请注意,由于上面的指针是const
限定的,因此必须在声明时对其进行初始化。 否则,它不会编译。
b) 声明一个指向非
const
指针的非const
指针,指向非const
int
int * const *b;
c) 声明一个非
const
指针,指向一个非const
指针,指向一个const
int
const int **c;
对于const
指针,模式是:
T * const ptr; // const pointer to T
对于非const
指针:
T * ptr; // non-const pointer to T
然后, select 上面的正确模式用于最外层指针,并相应地替换T
为最内层指针(即埋在类型中的最深的指针):
const
int
的非const
指针: T = int *
。const
int
的const
指针: T = int * const
。const
int
的非const
指针: T = const int *
。这都是关于const
相对于*
放置的位置:如果const
在左侧,则指向的是const
,如果const
在*
的右侧,则指向的是const
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.