在C中初始化指针
我看到两个分配指针的选项 一, 二, 为什么它们在1中使用星号在C中初始化指针,c,pointers,C,Pointers,我看到两个分配指针的选项 一, 二, 为什么它们在1中使用星号 在两个没有?的情况下,这两个选项实际上是相同的。第一个是更少的文本 星号在声明(如int*r)中使用时,告诉编译器变量r是指针。您应该阅读以下内容: int *r [...] 作为: r的类型是int*。如果你这样看,你会发现两个版本都是相同的。案例2:int*r是指向int的未初始化指针的声明r=&p是一种赋值,用于设置指针的值 案例1:int*r=&p是指向int的指针的声明,该指针用p的地址初始化。第二个指针完全相同。第一个
在两个没有?的情况下,这两个选项实际上是相同的。第一个是更少的文本 星号在声明(如
int*r
)中使用时,告诉编译器变量r
是指针。您应该阅读以下内容:
int *r [...]
作为:
r
的类型是int*
。如果你这样看,你会发现两个版本都是相同的。案例2:int*r
是指向int
的未初始化指针的声明r=&p
是一种赋值,用于设置指针的值
案例1:
int*r=&p
是指向int
的指针的声明,该指针用p
的地址初始化。第二个指针完全相同。第一个示例声明了变量,并且一次性赋值。声明部分需要*
,因为它指定此变量将存储指向int值的指针。赋值部分不需要这种东西,因为变量r
已经声明为指针。因为在1中。int*r=&p
是声明
在2中。r=&p
不在声明中
asterix(*)表示指针的数据类型
要了解更多信息,你可以阅读哦,我想我明白了另一个问题,我会做这件事;int*r*r=&p
r
属于int*
类型,因此*r
属于int
类型。您应该从编译器中获得警告(如果没有,请确保已打开警告)*r=&p
尝试将指针(&p
)分配给int(*r
)。这不是便携/安全的。第一个是初始化。第二个是作业
int p
int *r;
r=&p;
int *r [...]
(int *) r [...]