數組元素的訪問方法

一)、一維數組和指針

若有以下語句:

int *p,s[10],I;

p=s;

則s[i]的地址可用下面三種方法表示:

(1)&s[i]     (2) s+i     (3)p+i。

因此可以用s[i],*(s+i),*(p+i)來表示s[i]。由於s[i]可以用表達式*(s+i)來表示,同理*(p+i)也可以用p[i]來表示。事實上在c語言中,[]並不僅僅是用作表示數組元素的記號,而是一種運算符。因此當p指向數組s的首地址時,表示數組元素s[i]的表達式有下面四種方法:

(1)s[i]        (2)*(s+i)           (3) *(p+i)              (4) p[i]

在這裏s是數組名,是不可變的,而p是指向數組首地址的指針,其值是可變的。

二)、二維數組和指針

若有以下語句:

#define M 10

#define N 8

int a[M][N];

則二維數組元素的地址可以用下面5種方式表示:

(1)&a[i][j]

(2)a[i]+j

(3)*(a+i)+j

(4)&a[0][0]+i*N+j

(5)a[0]+i*N+j

相應的數組元素也有5種表達方式:

(1)       a[i][j]

(2)       *(a[i]+j)

(3)       *(*(a+i)+j)

(4)       *(&a[0][0]+i*N+j)

(5)       (*(a+i))[j]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章