2

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

1.

int p=5;
int *r=&p

2.

int p
int *r;
r=&p;

为什么他们在 1 中使用带星号而在 2 中不使用?

4

5 回答 5

8

您应该阅读以下内容:

int *r [...]

作为:

(int *) r [...]

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

于 2012-10-19T06:46:55.050 回答
3

这两种选择实际上是相同的。首先是更少的文字。

星号,当在声明中使用时int *r,告诉编译器该变量r 一个指针。

于 2012-10-19T06:46:08.700 回答
0

情况2:int *r是一个未初始化指针的声明intr = &p是将值设置为指针的赋值。

情况 1:int *r=&p是一个指针的声明,int它的地址初始化为p.

于 2012-10-19T06:47:38.413 回答
0

第二个完全一样。第一个示例也一次性声明了变量并赋值声明部分需要,*因为它指定此变量将存储指向 int 值的指针。赋值部分不需要这种东西,因为变量已经r声明指针。

于 2012-10-19T06:48:22.903 回答
0

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

并且 in2. r=&p不在声明中。

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

有关更多信息,您可以在此处阅读

于 2012-10-19T06:52:04.043 回答