C语言二级指针的代码实践

C语言二级指针的代码实践

#include<iostream>
#include<stdlib.h>

typedef struct Point{
	int data;
	struct Point *next;
} Point;

//注释中是c++写法  ,三处不同
void contract(Point **x){  //Point *&x 
	Point *p = (Point*)malloc(sizeof(Point));
	Point *q = (Point*)malloc(sizeof(Point));
	p->data = 11;
	p->next = q;
	q->data = 22;
	q->next = NULL;
	*x = p;
//	x = p;
}

int main(){
	
	Point *z = (Point*)malloc(sizeof(Point));
	z = NULL;
	contract(&z);
//	contract(z);
	printf("%d",z->next->data);
	return 0;
}

这里是二级指针修改一级指针的本质

这里就是把 一级指针Point p* 赋值给 x指向的 Point*
所以使用 *x 取出一级指针

在这里插入图片描述

这里是不使用二级指针传参

这样无法给 指针z 完成链表操作。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uWYvMIEX-1648133816359)(https://img-blog.csdnimg.cn/50b481a645244fb19c50f597287476a0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p2O6Zi_5LyfbGl6aHc=,size_20,color_FFFFFF,t_70,g_se,x_16)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值