说明:
链表比数组更加灵活。
例如:有一串已经从小到大排好序的数 2 3 5 8 9 10 18 26 32。现需要往这串数中插入 6 使其得 到的新序列仍符合从 小到大排列。如我们使用数组来实现这一操作,则需要将 8 和 8 后面的 数都依次往后挪一位。
如何实现呢?
1.使用指针。
指针就是用来存储内存地址的,为什么要分不同类型的指针呢?
因为指针变量存储的是一个内存空间的首地址
(第一个字节的地址),但是这个空间占用了多少个字节,用来存储什么类型的数,则是由指针的类型来标明的。2.使用指针和动态分配内存函数 malloc。
a.使用 malloc 函数时需要用到 stdlib.h 头文件 !!!
malloc 函数的作用就是从内存中申请分配指定字节 大小的内存空间。
如果你不知道 int 类型是 4 个字节的,还可以使用 sizeof(int)获取 int 类型所占用的字节数, 如下:
malloc(sizeof(int)); b. malloc 函数的返回类型是 void * 类型。
void * 表示未确定类型的指针。
在 C 和 C++中,void * 类型可以强制转换为任何其他 类型的指针。
代码部分:
1 |
|
输出:
1 | 10 |
总结:
1.链表可以处理预先不知道变量个数的问题。
2.&叫取地址符。
3.在 C 语言中 * 号有三个用途,分别是:
1. 乘号,用做乘法运算,例如 5*6。 2. 申明一个指针,在定义指针变量时使用,例如 int *p;。 3. 间接运算符,取得指针所指向的内存中的值,例如 printf("%d",*p);。