4
  typedef char* ptr;
  const ptr p;

这是真的:

  • p指向一个常量字符;或者
  • p是一个常数,指向一个字符。

请说明原因

4

2 回答 2

8
typedef char* ptr;
const ptr p;

后一行相当于

char * const p;

iep是一个const指向char. 为typedef类型引入了一个新名称,它不是文本替换。

于 2012-07-23T19:35:28.120 回答
5

首先,让我们暂时将 typedef 排除在等式之外。

const char *p并且char const *p都声明p为指向 const 数据的非常指针您可以指定指向不同的事物,但不能修改所指向的事物。p

char * const p声明p为指向非 const数据的const指针;您不能更改为指向不同的对象,但您可以修改所指向的对象。pp

const char * const p并且char const * const p都声明p为指向const数据的const指针。这应该是不言自明的。

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

于 2012-07-23T19:41:56.370 回答