在声明进程中初始化指针的值

时间:2015-03-22 20:53:12

标签: c pointers

指针中的某些东西让我困惑 声明一个指向int的指针然后定义它

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。它与正常声明有什么不同吗?

1 个答案:

答案 0 :(得分:2)

声明中的

*

int *p = &a;

不是间接运算符。它只是通知编译器p是指针类型。 *仅在出现在语句中时才作为解除引用运算符。这意味着*p中的int *p = &a;*p的{​​{1}}的{​​{1}}不同。