int *p, a;
p = &a;
a = 3;
可以改为
int a = 3;
int *p = &a;
我在后一种情况下感到困惑。不是* p的值是p指向的对象的值(在这个例子中是a的值)所以为什么在前一种情况下它是
int *p = &a;
是a的地址而不是a的值。不应该
int p = &a
为了说明p是指针,它指向的地址是对象a的地址
此外,我在某些情况下看到有(int *)p。它与正常声明有什么不同吗?
答案 0 :(得分:2)
*
int *p = &a;
不是间接运算符。它只是通知编译器p
是指针类型。 *
仅在出现在语句中时才作为解除引用运算符。这意味着*p
中的int *p = &a;
与*p
的{{1}}的{{1}}不同。