指针与链表:指针数组与双重指针的应用

需积分: 9 5 下载量 5 浏览量 更新于2024-07-13 收藏 482KB PPT 举报
本文主要讨论了指针与链表的相关概念,重点涉及指针作为函数返回值的应用,以及指针数组与指针的指针操作。首先,指针是C语言中的重要概念,它允许程序员直接操作内存地址,包括变量和数据结构。类型标识符后面跟着星号"*"表示一个指针变量,它可以指向特定类型的变量。例如,`int *p`定义了一个可以存放整型变量地址的指针变量。 在函数定义中,如`int *max(int a[], int n)`,返回指针类型的函数会返回指向最大值的指针。在`main()`函数中,通过`p = max(a, 10);`语句,调用`max`函数并将其结果赋值给指针`p`。 接着,文章回顾了数组的概念,数组名本质上是该数组第一个元素的地址,数组的大小和类型在定义后是固定的。数组名有两种含义,一是作为数组本身的引用,二是作为指向数组首元素的指针。通过`sizeof`运算符,可以验证数组的大小,如`sizeof(a) == sizeof(a+1)`。 指针和数组之间有密切关系,数组名本质上就是数组的第一个元素的地址,因此数组可以被视为具有特定类型的指针。指针数组,如`int *a[3]`,存储的是指向整数的指针,每个元素可以被初始化为NULL或其他地址。举例中,`p[0]=&a;`表示将指针`p[0]`指向变量`a`的地址。 例14.5展示了如何使用指针数组`ps`来输出一系列字符串,通过循环遍历数组并调用`puts()`函数显示每个字符串。而在例14.6中,通过定义指向指针的指针变量,可以实现将字符串按照逆序输出,这涉及到指针的间接引用,即`*p[0]`等价于`a`,`*p[1]`等价于`b`,以此类推。 本文深入浅出地介绍了指针的基本概念、数组和指针数组的交互,以及在实际编程中的应用示例,这对于理解和操作C语言中的数据结构至关重要。