我看到两个分配指针的选项
1
int p=5;
int *r=&p
2
int p
int *r;
r=&p;
为什么他们在1中使用星号 两个没有?
答案 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)