当前位置: 首页 > 编程语言 > C语言 > 正文

C语言基础教程(四)指针、结构、联合和枚举(4)

时间:2007-05-04 王大刚
2.1.指向数组元素的指针
我们定义一个整型数组和一个指向整型的指针变量:
int a[10], *p;
和前面介绍过的方法相同,可以使整型指针p指向数组中任何一个元素,假定给出赋值运算
p=&a[0];
此时,p指向数组中的第0号元素,即a[0],指针变量p中包含了数组元素a[0]的地址,由于数组元素在内存中是连续存放的,因此,我们就可以通过指针变量p及其有关运算间接访问数组中的任何一个元素。
Turbo C中,数组名是数组的第0号元素的地址,因此下面两个语句是等价的
p=&a[0];
p=a;
根据地址运算规则,a+1为a[1]的地址,a+i就为a[i]的地址。
下面我们用指针给出数组元素的地址和内容的几种表示形式。
(1).p+i和a+i均表示a[i]的地址,或者讲,它们均指向数组第i号元素,即指向a[i]。
(2).*(p+i)和*(a+i)都表示p+i和a+i所指对象的内容,即为a[i]。
(3).指向数组元素的指针,也可以表示成数组的形式,也就是说,它允许指针变量带下标,如p[i]与*(p+i)等价。
假若:p=a+5;
则p[2]就相当于*(p+2),由于p指向a[5],所以p[2]就相当于a[7]。而p[-3]就相当于*(p-3),它表示a[2]。