C语言:深入理解指针数组与指针的指针

需积分: 0 2 下载量 201 浏览量 更新于2024-08-20 收藏 482KB PPT 举报
本文主要介绍了如何在C语言中使用指针数组和指针的指针来建立空表,包括指针和数组的基本概念,以及如何使用它们创建和操作数据结构。 在C语言中,指针是一种特殊的变量,它存储的是另一个变量的地址。基本的指针声明方式是类型标识符*变量名,例如`int *p`表示p是一个指向整型变量的指针。指针可以被赋值为其他变量的地址或者同类型的指针。数组则是一系列相同类型元素的集合,声明时使用类型标识符数组名[整型常量表达式],如`int a[3]`。数组名在内存中代表了数组首元素的地址,因此它也可以被视为指向数组第一个元素的指针。 指针和数组之间存在密切关系。数组名在某些情况下可以被视为指向数组首元素的指针常量,例如`sizeof(a)`返回数组的总大小,而`sizeof(a+1)`返回的是下一个数组的地址,这通常比原始数组大一个元素的大小。指针数组是数组的一个变种,它包含了一组指针,每个指针可以指向不同类型的变量。定义一个指针数组的形式为`类型标识符*数组名[整型常量表达式]`,如`int *a[3]`。 在建立空表的过程中,程序会不断读取用户输入,当用户输入1时,生成新结点并插入链表中。这里没有具体展示链表的实现,但通常会涉及到动态内存分配和结点结构的定义。 示例代码中,`例14.5`展示了如何使用指针数组来输出多个字符串。数组`ps`包含了四个字符串的首地址,`puts()`函数用于打印这些字符串。 在`例14.6`中,程序使用了指针的指针,即指针变量指向的也是一个指针。通过`name`指针数组,程序反向遍历并输出了字符串。这里,`name`是一个字符串指针数组,`printf()`函数按照下标递减的顺序访问每个字符串。 通过这些示例,我们可以理解指针数组和指针的指针在处理动态数据结构,如链表或数组时的重要性,它们提供了灵活的内存管理和数据操作手段。在实际编程中,利用这些概念可以实现复杂的数据结构,如树、图等。在处理动态数据或需要高效内存操作的问题时,熟练掌握指针和数组的用法是至关重要的。