C语言指针数组与指针的指针操作详解

需积分: 33 1 下载量 144 浏览量 更新于2024-07-14 收藏 482KB PPT 举报
本篇文章主要介绍了链表的建立过程以及指针和数组的相关概念。首先,通过C语言实现了一个名为`CreateFromHead`的函数,用于创建单链表。在这个函数中,我们使用了指针来操作内存,例如`SingleLink *p`是一个指向`ListNode`类型的指针,`head`是链表的头结点,初始化为`NULL`。函数通过`malloc`动态分配内存,如果分配失败,会打印错误并退出程序。 接着,文章回顾了指针的基本概念,包括: 1. 指针的声明:使用`类型标识符*变量名`,比如`int *p`表示一个可以存储整数地址的指针。 2. 指针类型和内容:指针类型决定了它能指向的变量类型,而`指针变量的地址`则表示该变量在内存中的位置。 3. 指针赋值:可以通过目标变量地址或者同类型指针来给指针赋值。 4. 数组的复习:数组是固定大小的一组相同类型的变量集合,数组名代表的是数组的首元素的地址,`sizeof`操作可以用来验证数组元素的数量。 文章特别强调了指针数组的概念,它是数组的一种特殊形式,即`类型标识符*数组名[整型常量表达式]`,如`int *a[3]`和`char *s[6]`。指针数组存储的是各个元素的地址,每个元素可以被初始化为`NULL`。同时,指针数组与指针的指针之间的关系也被提及,例如`p[0]`实际上就是数组中的第一个元素的地址。 在举例部分,通过`int *p[3]`和`char *pa`的例子,展示了如何使用指针数组来存储和操作其他变量的地址,以及如何通过`p[0]=&a`这样的语句来改变指针数组的内容。 最后,文章给出了两个实际的应用示例: 1. 示例14.5演示了如何使用指针数组`ps`来输出4个字符串,每个字符串是通过数组元素的地址间接访问的。 2. 示例14.6则是通过一个指向指针的指针变量`name[i]`,实现了对一系列字符串的反向输出,这进一步展示了指针和指针数组的复杂交互。 这篇文章详细解释了链表的建立过程,并深入剖析了指针和数组在C语言中的运用,有助于理解数据结构和内存管理的基础知识。