如何输入定义常量变量

时间:2012-07-23 19:32:48

标签: c typedef

  typedef char* ptr;
  const ptr p;

这是真的:

  • p指向一个恒定的角色;或
  • p是一个常量并指向一个角色。

请解释原因

2 个答案:

答案 0 :(得分:8)

typedef char* ptr;
const ptr p;

后一行相当于

char * const p;

即。 p是指向const的{​​{1}}指针。 char为类型引入了新名称,它不是文本替换。

答案 1 :(得分:5)

首先,让我们暂时取出等式中的typedef。

const char *pchar const *p都将p声明为非const 指向 const 数据的指针;你可以指定p指向不同的东西,但你不能修改被指向的东西。

char * const pp声明为 const 指向非const 数据的指针;您无法将p更改为指向其他对象,但您可以修改p指向的内容。

const char * const pchar const * const p都将p声明为 const 指向 const 数据的指针。这应该是相当不言自明的。

typedef有点不直观。 ptrchar *的同义词,因此const ptr充当char * const; const限定符正在应用于指针类型,而不是char类型。