int const *ptr;
int *const *ptr;
int **const ptr;
int const **ptr;
我知道关键字 const 后面的内容无法重写(这里我不能分别重写* ptr,* ptr,ptr,** ptr)。但我不确定关键字const 之前的指针的行为,也无法找到未定义的行为。如果有人可以解释我这将是有帮助的。
由于
答案 0 :(得分:5)
它们都不是“未定义的行为”。它们只是不同的指针声明:
int const *ptr; // pointer to const int
int *const *ptr; // pointer to const pointer to int
int **const ptr; // const pointer to pointer to int
int const **ptr; // pointer to pointer to const int
如果某些内容为const
,则无法对其进行修改。对于指针,这意味着指针本身不能改变(即它不能被修改为指向别的东西),但无论指针指向什么,仍然可以修改,除非它也是const
。