繁体   English   中英

c++ const 用于指向指针的指针

[英]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 intconst指针: T = int * const
  • 指向const int的非const指针: T = const int *

这都是关于const相对于*放置的位置:如果const在左侧,则指向的是const ,如果const*的右侧,则指向的是const

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM