在C中初始化指针

时间:2012-10-19 06:43:14

标签: c pointers

我看到两个分配指针的选项

1

int p=5;
int *r=&p

2

int p
int *r;
r=&p;

为什么他们在1中使用星号 两个没有?

5 个答案:

答案 0 :(得分:7)

你应该读到这个:

int *r [...]

为:

(int *) r [...]

r的类型为int *。如果你这样看,你会发现两个版本都是相同的。

答案 1 :(得分:2)

两种选择实际上是相同的。第一个是更少的文字。

星号在int *r之类的声明中使用时,告诉编译器变量r 指针。

答案 2 :(得分:0)

案例2:int *r是指向int的未初始化指针的声明; r = &p是一个将值设置为指针的赋值。

案例1:int *r=&p是指向int的指针的声明,该指针使用p的地址初始化。

答案 3 :(得分:0)

第二个是完全一样的。第一个示例声明变量,一次性分配值声明部分需要*,因为它指定此变量将存储指向int值的指针。 值赋值部分不需要此类内容,因为变量r已经声明作为指针。

答案 4 :(得分:0)

因为1. int *r=&p是声明。

并且2. r=&p中没有声明。

asterix(*)表示指针的数据类型。

有关详细信息,请参阅here