1、数组的指针
数组元素在内存中连续存放,数组名代表数组首地址,是一个地址常量。
2、指向数组的指针变量的定义
例如,int a[10], *p=a(或&a[0]);
或者:int a[10], *p;p=a;
3、数组元素的引用
(1)按名存取
有int a[10],*p=a;定义,则p=a,一个数组,两个名字p 和a,访问元素时用a[i]或p[i]。
(2)按地址存取
有int a[10],*p=a;定义,则:p+i 和a+i 都是数组元素a[i]的地址,访问元素时用*(p+i)和*(a+i)。按地址存取:*(p+i),*(a+i),按名存取:a[i],p[i]四个是等价关系。
注意:①p+n 指向数组的下n 个元素,而不是简单地使指针变量p 的值+n。编译时为p+n*m。m 为一个元素占用的字节数。c语言培训班 ②指针变量:既然是变量,其值随时在变,必须注意其当前值,否则容易出错。③指向数组的指针变量,可以指向数组以后的任何内存单元,C 语言不做越界检查,这些单元不是系统分配的单元,强占资源,易导致死机。④int a[10],*p=a;p++对,a++错,a 常量,p 变量。
(3)指向数组的指针变量所支持的运算
地址加减数值等于新地址,除此以外运算没有意义,由此得出推论,指针支持的运算有:
算术运算:指针变量±整形数据、指针变量-指针变量=整型数值,该数值表示两指针之间的数据个数,并非地址之差。
关系运算:指针变量关系运算符指针变量,表示两个变量值的大小关系,谁在前谁在后。