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 完成链表操作。