我看到两个分配指针的选项
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声明为指针。