更新時間:2022-10-27 08:58:53 來源:動力節點 瀏覽44次
二維數組指針怎么使用?動力節點小編來告訴大家。
int a[5]={1,2,3,4,5};
int *p=(int *)(&a+1);
int *q=(int *)&a;
printf("%p,%p,%p",a,p,q+1);
本身a作為一個地址,p作為指向a的地址,相當于一個二維指針, 一個二維指針加一相當于移動了一行,所以這里是移動了5*4個字節,而對于q+1的情況,說明移動了4個字節。
注意:行指針和列指針的定義方式就不一樣
對于指向二維數組的指針變量p,可以有兩種:
一種是指向數組元素的列指針
一種是指向行的行指針,這時,p不是指向一個具體的數組元素,而是指向一個包含m個元素的一維數組。這里對行指針特殊說明一下;
行指針的定義形式為:類型標識符 (*指針變量名)[長度];
例如: int a[3][4],(*p)[4]=a; //這里也可以寫為int a[3][4],(*p)[4]=&a[0];
其中p,p+1,p+2和a,a+1,a+2都是第i行的首地址。
使用指針變量訪問二維數組的任意一個元素的方法
(1)使用列指針:定義一個列指針p,讓它指向二維數組的第0個元素
int a[3][4];
int *p
p=&a[0][0]; //因為a[0]是第0行的數組名,所以p=&a[0][0]相當于p=a[0],因為a[i][j]前面共有i*4+j個元素,該二維數組的任意i行j列元素可表示為*(p+i*4+j)(使用列指針表示每個元素的方式)
(2)使用行指針:定義一個行指針p,讓它指向二維數組的第0行
int a[3][4];
int (*p)[4];
p=a; //也可以為p=&a[0];
其中* ( *(p+i)+j)表示任意一個i行j列的元素。
根據行指針和列指針都可以找到數組中的每一個元素,但是方式不一樣。
提交申請后,顧問老師會電話與您溝通安排學習