我看到两个分配指针的选项
1.
int p=5;
int *r=&p
2.
int p
int *r;
r=&p;
为什么他们在 1 中使用带星号而在 2 中不使用?
您应该阅读以下内容:
int *r [...]
作为:
(int *) r [...]
的类型r
是int *
。如果你这样看,你会发现两个版本是相同的。
这两种选择实际上是相同的。首先是更少的文字。
星号,当在声明中使用时int *r
,告诉编译器该变量r
是一个指针。
情况2:int *r
是一个未初始化指针的声明int
;r = &p
是将值设置为指针的赋值。
情况 1:int *r=&p
是一个指针的声明,int
它的地址初始化为p
.
第二个完全一样。第一个示例也一次性声明了变量并赋值。声明部分需要,*
因为它指定此变量将存储指向 int 值的指针。赋值部分不需要这种东西,因为变量已经r
声明为指针。