指针的高级应用

总结:

想修改哪个变量,就传递那个变量的地址。

想修改指针指向的对象–>传递一级指针

想修改指针变量的值(指针变量的指向)–>传递

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#define _CRT_SECURE_NO_WARNINGS

#include<stdlib.h>
#include<stdio.h>

//定义节点类型
typedef struct node_s {
int data;
struct node_s* next;
}Node;

void addNode(Node* list, int data);
int main() {
Node* list = NULL;// 空链表
Node** plist = &list;
for (int data = 0; data < 100; data++)
{
addNode(plist, data);
printf("%d\n", list->data);
}

return 0;
}
void addNode(Node** plist, int data) {

//创建结点
Node* newnode = malloc(sizeof(Node));
if (!newnode) {
printf("addNode failed!\n");
exit(1);
}

// 初始化结点
newnode->data = data;
//头插法
newnode->next = *plist;
*plist = newnode;
return;
}

函数指针