发布时间:2024-03-04 08:01
(来自百度解答)
Node *p是定义一个Node结构体指针,指针名为p,指向一个Node结构体,并为这个结构体分配了内存空间
该结构体无命名
Node p是定义一个Node结构体,结构体名为p。
结构体指针本质上是指向一个结构体
使用如下例
struct Node{int i;char c;}
Node *P1;
Node P2;
P1->i;
p2.c;
假如该结构体有两个属性 int i;char c;
使用时结构体变量p2直接用点操作符如p2.c;
使用结构体指针p1时用->操作符如P1->i;->操作符即为调用指针指向的变量
内存中结构体分配在一段内存地址上,起始地址为结构体指针的值
如Node *p=(Node *)malloc(sizeof(Node));此时p的值即为Node变量在内存中的起始地址
若用Node p声明结构体变量则会随机的在内存中利用剩余空间分配 此时起始地址不可知
一般编译器会预留一段内存地址以便创建变量
两种声明分配的内存空间大小相等
可以这么理解