c++ - c++ const 用于指针
问题描述
指向常量 int 的指针。我可以更改指针,但我可能不会更改值:
const int* a;
一个指向 int 的常量指针。我可能不会更改指针,但我可能会更改变量的值:
int* const a;
现在,如果我正在处理指向指针的指针,情况会如何?
int** a;
我如何能:
a) 声明一个指向非 const 指针的 const 指针,指向非 const int
b) 声明一个非常量指针,指向一个非常量 int 的 const 指针
c) 声明一个指向 const int 的非常量指针的非常量指针?
解决方案
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
指向 aconst
int
:T = const int *
。
推荐阅读
- java - JUnit 要执行的方法列表
- angular - 使用 ViewChildren 访问子组件的指令
- java - 我们可以从 Java 中的 Future 对象中获取 Callable 对象吗?
- android - 带有编辑文本的自定义工具栏布局
- regex - 带制表符的正则表达式 \t
- c++ - 如何在虚幻引擎 4 中添加第三方库
- datatables - 如何处理 Jquery DataTables 中的页面索引选择
- android - 选择特定单选按钮时如何将编辑文本字段拆分为两个单独的字段
- java - 如何处理 CWE-400-Resource 耗尽错误
- android - 回收站视图不显示项目