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]。