typedef char* ptr;
const ptr p;
这是真的:
p
指向一个恒定的角色;或p
是一个常量并指向一个角色。 请解释原因
答案 0 :(得分:8)
typedef char* ptr;
const ptr p;
后一行相当于
char * const p;
即。 p
是指向const
的{{1}}指针。 char
为类型引入了新名称,它不是文本替换。
答案 1 :(得分:5)
首先,让我们暂时取出等式中的typedef。
const char *p
和char const *p
都将p
声明为非const 指向 const 数据的指针;你可以指定p
指向不同的东西,但你不能修改被指向的东西。
char * const p
将p
声明为 const 指向非const 数据的指针;您无法将p
更改为指向其他对象,但您可以修改p
指向的内容。
const char * const p
和char const * const p
都将p
声明为 const 指向 const 数据的指针。这应该是相当不言自明的。
typedef
有点不直观。 ptr
是char *
的同义词,因此const ptr
充当char * const
; const
限定符正在应用于指针类型,而不是char
类型。