C語言學習筆記 指標 指標與二維陣列

2021-09-01 18:21:49 字數 2106 閱讀 4589

在c語言中可將乙個二維陣列看成是由若干一維陣列構成的。如:

int a[3][4];
首先,可將二維陣列a看成是由a[0],a[1],a[2]三個元素組成的一維陣列,a是該一維陣列的陣列名,代表該一維陣列的首位址,即第乙個元素a[0]的位址(&a[0])。所以*(a+i)即為a[i],注意這裡所謂的元素a[0],a[1],a[2]事實上仍然是個位址。

其次,可以將a[0],a[1],a[2]分別看成是由4個int型元素組成的一維陣列元素的陣列名,如a[0]就可以看成由元素a[0][0]a[0][1]a[0][2]a[0][3],這4個整型元素組成的一維陣列。a[0]就是這個一維陣列的陣列名,它代表該一維陣列的首位址,即第乙個元素a[0][0]的位址(&a[0][0]),則a[0]+i表示a[0][i的位址(&a[0][i])。因此*(a[0]+i)即為a[0][i。同時,a[i]即*(a+i)可以看成一維陣列a的下標為i的元素。根據以上分析可知a[i]+j及*(a+i)+j代表這個陣列中下標為j的元素位址,即&a[i][j]*(a[i]+j)*(*(a+i)+j)就代表這個位址所指向的元素的值,即a[i][j]。因此,以下4種表示元素a[i][j]的形式是等價的:

a[i][j]

*(a[i]+j)

*(*(a+i)+j)

(*(a+i))[j]

行指標:使用二維陣列的行位址進行初始化。

一般格式:型別關鍵字 (*行指標名)[常量n];

其中,常量n定義行指標所指一維陣列的長度。

通過行指標p引用二維陣列的方法可以有以下4種形式:

p[i][j]

*(p[i]+j)

*(*(p+i)+j)

(*(p+i))[j]

例如:

# include int main(void)

; int i, j;

int (*p)[4] = a; //行指標初始化格式

for (i=0; i<3; ++i)

printf("\n");

}return 0;

}

輸出結果:

1 2 3 4

5 6 7 8

9 10 11 12

列指標:使用二維陣列的列位址進行初始化。

定義列指標p後,為了能通過p引用二維陣列元素a[i][j],可將陣列a看成乙個由m行*n列個元素組成的一維陣列。因此,p+i*n+j代表陣列的第i行第j列的位址,即&a[i][j],於是,通過列指標p引用二維陣列a[i][j]的方法可以有以下兩種形式:

*(p+i*n+j)

p[i*n+j]

例如:

# include int main(void)

; int i, j;

int *p = &a[0][0]; //列指標初始化格式,把a[0][0]的位址賦給指標變數p

for (i=0; i<3; ++i)

printf("\n");

}return 0;

}

輸出結果:

1 2 3 4

5 6 7 8

9 10 11 12

c語言學習之指標與二維陣列

二維陣列,陣列名為第陣列第乙個元素的位址即a為 a 0 0 第一行的行名 為一維陣列a 1 也為第乙個元素位址,同理第二行的行名為第二個行第乙個元素的位址即a 0 為 a 0 0 a 2 為 a 2 0 綜上即a a 0 a 0 0 a 2 a 2 0 陣列名加一為行數加一即a 1為第二行即a 1 ...

C語言學習筆記 指標 指標與一維陣列

int a 10 int p null p a 其中,陣列名a代表陣列的首位址 即 a 0 那麼表示式a i代表陣列中下標為i元素a i 的位址,即 a i 還可以通過使用間接定址 來引用陣列元素。例如 a i 表示取出首位址元素後邊第i個元素的內容,即下標為i的元素a i 此外,還可以通過一維陣列...

C語言指標與二維陣列

includeint main int p 3 null p array p is same as array,the use of p is same as array.so p is the two devision pointer same as array int p1 array 0 0 ...