在C中初始化指针

在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的地址初始化。第二个指针完全相同。第一个

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

一,

二,

为什么它们在1中使用星号
在两个没有?

的情况下,这两个选项实际上是相同的。第一个是更少的文本

星号在声明(如
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 [...]