利用数组名访问二维数组
#include <stdio.h>
int main(int argc, const char * argv[]) {
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
for (int i=0; i<3; i++) {
for (int j=0; j<4; j++) {
//a+1 第二行的首地址 // *(a+1)== &a[1][0] 第二行第一个元素的首地址 //(*(a+1)+1)==&a[1][1] 第二行第二个元素的地址 // * ( * ( a + 1) + 1 )==a[1][1] 第二行第二个元素的值
printf("%d\t",*(*(a+i)+j));
}
printf("\n");
}
return 0;
}
利用普通指针访问二维数组 #include <stdio.h>
int main(int argc, const char * argv[]) {
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int *p = a;//定义普通指针
for(int i =0;i<12;i++){ //数组在内存中存储是连续的
printf("%d\t",*(p+i)); }
return 0;
} 利用二维数组指针访问二维数组 include <stdio.h> int main(int argc, const char * argv[]) {
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
//定义二维数组指针
//二维数组指针可以替代数组名去使用
int (*p)[4] = a;
for (int i=0; i<3; i++) {
for (int j=0; j<4; j++) {
//遍历数组
printf("%d\t",*(*(p+i)+j));
}
printf("\n");
}
return 0;
}
|