/**首先弄明白什麼是指針數組,什麼又是數組指針。
指針數組:
類型名 *數組名[數組長度]
如: int *p[8];
因爲優先級的關係,p先與[]結合,說明p是一個數組,然後再與*結合數組p
的元素是指向整型數據的指針。相當於定義了8個整型指針變量。在此,p就是
數組元素爲指針的數組,本質爲數組。
數組指針:
類型名 (*指針名)[數組長度]
如:int (*p)[8];
p先與*號結合,形成一個指針,該指針指向的是有8個整型元素的數組,
p即爲指向數組首元素地址的指針,其本質爲指針。
**/
#include <stdio.h>
#include <stdlib.h>
int main()
{
int arr[4][4];
int i,j,k=0;
for(i=0;i<4;i++){
for(j=0;j<4;j++){
arr[i][j]=k;
k++;
}
}
int *p1[4];
int (*p2)[4];
for(k=0;k<4;k++){
p1[k]=arr[k];
}
printf("\n使用指針數組的方式訪問二維數組arr\n");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
printf("arr[%d][%d]=%d\t",i,j,*(p1[i]+j));
///p1[i]+[j]即第i行第j列的元素地址
}
}
printf("\n-----------------------------------\n");
p2=arr;
printf("\n使用數組指針的方式訪問二維數組arr\n");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
printf("arr[%d][%d]=%d\t",i,j,*(*(p2+i)+j));
}
}
return 0;
}
指針數組和數組指針的詳細解答
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.