本节知识点:
1、数组指针定义
2、使用指针引用数组元素
3、一维指针数组
=========================================================================
1、数组指针
数组元素指针
一个变量有地址,一个数组包含若干元素,每个数组元素都有相应的地址。
指针变量可以指向数组元素(把某一元素的地址放到一个指针变量中)。
所谓数组元素的指针就是数组元素的地址,可以用一个指针变量指向一个数组元素 。
注意:
数组名a不代表整个数组,只代表数组首元素的地址。
p=a; 的作用是把a数组的首元素的地址赋给指针变量p,而不是把数组a各元素的值赋给p
2、 使用指针引用数组元素
在指针指向数组元素时,允许以下运算:加一个整数(用+或+=),如p+1
减一个整数(用-或-=),如p-1
自加运算,如p++,++p
自减运算,如p--,--p
两个指针相减,如p1-p2 (只有p1和p2都指向同一数组中的元素时才有意义)
如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素,p-1指向同一数组中的上一个元素。
float a[10],*p=a;
假设a[0]的地址为2000,则
p的值为2000
p+1的值为2004
P-1的值为1996
注意:
(1) 如果p的初值为&a[0],则p+i和a+i就是数组元素a[i]的地址,或者说,它们指向a数组序号为i的元素
(2) *(p+i)或*(a+i)是p+i或a+i所指向的数组元素,即a[i]。
(3) 如果指针p1和p2都指向同一数组
p2 - p1 = 4 p1 + p2是错误的
结论: 引用一个数组元素,可用下面两种方法:
(1) 下标法,如a[i]形式
(2) 指针法,如*(a+i)或*(p+i)
(3) a是常量(a++错误),p是变量(p++正确)
思考与实现1:
有一个整型数组a,有10个元素,要求输出数组中的全部元素
(1)下标法
(2)通过指针变量
(3)通过数组名(但是数组名是常量)
思考与实现2:
3、一维指针数组
一个数组元素值为指针的数组是指针数组。
指针数组是一组有序的指针的集合。
指针数组的所有元素都必须是具有相同存储类型和指向相同数据类型的指针变量。
指针数组说明的一般形式为:
类型说明符 *数组名[数组长度]
其中类型说明符为指针值所指向的变量的类型。例如:
int *pa[3]
表示pa是一个指针数组,它有三个数组元素,每个元素值都是一个指针,指向整型变量。