#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data;
int data1;
}*link,tree;
int main()
{
int i;
tree *p1;
link p2;
link *p3;
p1 = (link)malloc(sizeof(tree));
p2 = (link)malloc(sizeof(tree));
//先给p3指向的内存分配空间 这里的P3为二级指针,所以得先给指针本身的分配
p3 = (link *)malloc(sizeof(link));
/* 再给二级指针指向的指针分配空间,其实二级指针**p相当于指针数组 *p[]
* 给指针所占有的结构体分配空间
* 这里只给第一个指针对象分配空间
*/
(*p3) = (link)malloc(sizeof(tree));
p1->data=1;
p1->data1=2;
//一级指针的两种不同定义结构体指针方式赋值
p2 = p1;
printf("%d,%d\n",p2->data,p2->data1);
//二级指针同一级指针赋值,两种方式
*p3 = p1 ;
//p3= &p1; //容易出问题,不要使用 重要 原因
printf("p1->data=%d,%d\n",p1->data,p1->data1);
printf("(*p3)->data=%d,%d\n",(*p3)->data,(*p3)->data1);
//二级指针的指针对象直接赋值
(*p3)->data = 3;
结构体指针的使用(二级)
最新推荐文章于 2024-07-20 10:50:19 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)