// 指针和二维数组
#include
int main(int argc, const char * argv[])
{
int a[3][6];
for (int i=0; i<3; i++) {
for (int j=0; j<6; j++) {
a[i][j]=i+j;
}
}
//输出数组元素
for (int i=0; i<3; i++) {
for (int j=0; j<6; j++) {
printf("%d\t",a[i][j]);
}
printf("\n");
}
/*
012345
123456
234567
*/
printf("\n");
//使用指针输出的方法
for (int i=0; i<3; i++) {
for (int j=0; j<6; j++) {
printf("%d\t",*(a[i]+j));
}
printf("\n");
}
int *p1,*p2;
p1=a[0];//指向第一行的首地址
p2=a[2];//指向第三行的首地址
printf("%d\n",*p1);//0 即a[0][0]
printf("%d\n",*p2);//2 即a[2][0]
/*
1.&a[0][0]是数组0行0列的地址,&a[m][n]是数组m行n列的地址
2.*(a[0]+n) 表示第0行的第n的元素
*/
//另一种输出方法
int *p3=a[0];//指向首地址
for (int i=0; i<3; i++) {
for (int j=0; j<6; j++) {
printf("%d\t",*p3++);
}
printf("\n");
}
printf("\n");
int *p4=a[1];
for (int i=0; i<6; i++) {
printf("%d\t",*(p4 +i));//输出第二行
}
return 0;
}