指针与数组:指针数组和指针的指针实现空表

需积分: 0 0 下载量 172 浏览量 更新于2024-08-24 收藏 518KB PPT 举报
本文主要介绍了如何使用指针数组和指针的指针来建立空表,包括指针和数组的基本概念、指针数组的定义和使用示例,以及使用指向指针的指针变量实现字符串的反序输出。 在C语言中,指针是一个重要的数据类型,它存储了一个变量的地址。类型标识符*变量名表示定义一个指向特定类型变量的指针,例如`int *p`定义了一个指向整型变量的指针。指针可以被赋值为一个变量的地址或者另一个同类型的指针。数组则是一组相同类型的数据集合,数组名代表了数组首元素的地址,是一个常量指针。 指针和数组之间有着密切的关系。数组可以看作是同一类型元素的连续内存空间,数组名实际上代表了这个内存区域的起始地址。例如,对于整型数组`int a[3]`,`a`就是数组的首地址,而`a+1`则是指向数组第二个元素的地址。数组的大小和类型在声明后是固定的。 指针数组是一种特殊的数组,它的每个元素都是一个指针。定义形式为`类型标识符*数组名[整型常量表达式]`,如`int *a[3]`定义了一个包含三个整型指针的数组。初始化时可以设置为`NULL`,例如`int *a[3]={NULL}`。通过这种方式,我们可以动态地存储和管理一组指针,每个指针可以指向不同的变量或数据结构。 指针的指针,即二级指针,是一个指针变量,它存储的是指针变量的地址。这样,二级指针就可以用来间接访问和修改指针所指向的变量。例如,`char **pp`是一个指向`char *`类型指针的指针,可以用来处理字符串数组。 在【例14.5】中,展示了如何使用指针数组`char*ps[4]`来存储和输出四个字符字符串。通过遍历数组并调用`puts()`函数,可以依次打印出每个字符串。 在【例14.6】中,演示了如何利用指针的指针变量`char **name`来反向输出一个字符串数组。这里,`name`是一个指针的指针,它可以直接访问和遍历数组`char*name[]`,通过反向遍历数组索引,实现了字符串的反序输出。 通过理解和掌握指针数组和指针的指针,程序员可以在C语言中实现更复杂的内存管理和数据结构操作,例如动态链表、树结构等。这些概念是C语言高级编程的基础,对于理解和编写高效的程序至关重要。