首页 > 解决方案 > c++ const 用于指针

问题描述

指向常量 int 的指针。我可以更改指针,但我可能不会更改值:

const int* a;

一个指向 int 的常量指针。我可能不会更改指针,但我可能会更改变量的值:

int* const a;

现在,如果我正在处理指向指针的指针,情况会如何?

int** a;

我如何能:

a) 声明一个指向非 const 指针的 const 指针,指向非 const int

b) 声明一个非常量指针,指向一个非常量 int 的 const 指针

c) 声明一个指向 const int 的非常量指针的非常量指针?

标签: c++pointersconstantsconst-correctness

解决方案


a) 声明一个const指向非非的const指针const int

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

然后,为最外层的指针选择上面的正确模式并T相应地替换最内层的指针(即埋在类型中的最深的指针):

  • const指向非const int:的非指针T = int *
  • const指向非const int:的指针T = int * const
  • const指向 a const int: T = const int *

推荐阅读