C程式設計基礎之多維陣列的指標變數

2021-03-31 17:14:00 字數 1241 閱讀 6671

一、多維陣列位址的表示方法

設有整型二維陣列a[3][4]如下:

0 1 2 3

4 5 6 7

8 9 10 11

設陣列a的首位址為1000,各下標變數的首位址及其值如圖所示。 

在前面曾經介紹過, c語言允許把乙個二維陣列分解為多個一維陣列來處理。因此陣列a可分解為三個一維陣列,即a[0],a[1],a[2]。每乙個一維陣列又含有四個元素。例如a[0]陣列,含有a[0][0],a[0][1],a[0][2],a[0][3]四個元素。 陣列及陣列元素的位址表示如下:a是二維陣列名,也是二維陣列0行的首位址,等於1000。a[0]是第乙個一維陣列的陣列名和首位址,因此也為1000。*(a+0)或*a是與a[0]等效的, 它表示一維陣列a[0]0 號元素的首位址。 也為1000。&a[0][0]是二維陣列a的0行0列元素首位址,同樣是1000。因此,a,a[0],*(a+0),*a,&a[0][0]是相等的。同理,a+1是二維陣列1行的首位址,等於1008。a[1]是第二個一維陣列的陣列名和首位址,因此也為1008。 &a[1][0]是二維陣列a的1行0列元素位址,也是1008。因此a+1,a[1],*(a+1),&a[1][0]是等同的。 由此可得出:a+i,a[i],*(a+i),&a[i][0]是等同的。 此外,&a[i]和a[i]也是等同的。因為在二維陣列中不能把&a[i]理解為元素a[i]的位址,不存在元素a[i]。

c語言規定,它是一種位址計算方法,表示陣列a第i行首位址。由此,我們得出:a[i],&a[i],*(a+i)和a+i也都是等同的。另外,a[0]也可以看成是a[0]+0是一維陣列a[0]的0號元素的首位址, 而a[0]+1則是a[0]的1號元素首位址,由此可得出a[i]+j則是一維陣列a[i]的j號元素首位址,它等於&a[i][j]。由a[i]=*(a+i)得a[i]+j=*(a+i)+j,由於*(a+i)+j是二維陣列a的i行j列元素的首位址。該元素的值等於*(*(a+i)+j)。

[explain]

#define pf "%d,%d,%d,%d,%d,/n"

main();

printf(pf,a,*a,a[0],&a[0],&a[0][0]);

printf(pf,a+1,*(a+1),a[1],&a[1],&a[1][0]);

printf(pf,a+2,*(a+2),a[2],&a[2],&a[2][0]);

printf("%d,%d/n",a[1]+1,*(a+1)+1);

printf("%d,%d/n",*(a[1]+1),*(*(a+1)+1));

}

C程式設計基礎之多維陣列的指標變數

一 多維陣列位址的表示方法 設有整型二維陣列a 3 4 如下 0 1 2 3 4 5 6 7 8 9 10 11 設陣列a的首位址為1000,各下標變數的首位址及其值如圖所示。在前面曾經介紹過,c語言允許把乙個二維陣列分解為多個一維陣列來處理。因此陣列a可分解為三個一維陣列,即a 0 a 1 a 2...

C語言入門之多維陣列的指標變數

c語言入門之多維陣列的指標變數 一 多維陣列位址的表示方法 設有整型二維陣列a 3 4 如下 0 1 2 3 4 5 6 7 8 9 10 11 設陣列a的首位址為1000,各下標變數的首位址及其值如圖所示。在前面曾經介紹過,data c c語言允許把乙個二維陣列分解為多個一維陣列來處理。因此陣列a...

多維陣列的指標變數

原文 http www.programfan.com article showarticle.asp?id 2689 一 多維陣列位址的表示方法 設有整型二維陣列a 3 4 如下 0 1 2 3 4 5 6 7 8 9 10 11 設陣列a的首位址為1000,各下標變數的首位址及其值如圖所示。在前面...