【发布时间】:2021-05-23 12:33:32
【问题描述】:
下面的代码很容易解释为
int x=4;
int *ptr; // ptr is a pointer to an int
ptr=&x; // the address of x is assigned to the pointer ptr
但下面的等效代码可能会让人误解
int *ptr=&x; // the address of x is assigned to *ptr, which is an integer
那似乎被解释为将 x 的地址分配给指向的值 *ptr (int *ptr )= &x
声明和初始化分开时的正确解释应该写成int *(ptr = &x),以表明赋值是指向指针而不是指向位置,但这会产生错误,为什么会这样?阅读和思考int *ptr=&x 的最佳方式是什么?
【问题讨论】:
-
很简单,类型是
int *,不管int和*的距离。你甚至可以写int * ptr=x;,这仍然有效。正确阅读只是习惯问题。 -
@Marco Bonelli 我看到了,但我通常发现它写为 int *ptr ,即指针名称旁边的 * ,这没有帮助。可以解释为int(*ptr),说ptr指向的值是整数是正确的
标签: c pointers initialization declaration