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]。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>