//对二维数组的引用:
//1.a[i][j];
//2.*(a[i] + j); //首先记住a[i]表示第i+1个一维数组名!表示第i+1个一维数组首元素的地址;
//由行-->列; a[i] + j
//最后加上*()取值;
//3.*(*(a + i) + j); //这一种就是将上面的[]换成*();
//以上是通过数组名对数组进行操作;
//接下来用指针变量对数组进行操作;
// printf("&a[0][0] = %p\n",&a[0][0]);
// printf("a = %p\n",a);
// printf("a + 1 = %p\n",a + 1);
// printf("&a[1][0] = %p\n",&a[1][0]);
//p+1 ==>int
// int *p = &a[0][0];
// printf("p + 1 = %p\n",p + 1);
// printf("&a[1][0] = %p\n",&a[1][0]);
//p是一个指针;指向的一个数组?几维的?只有一个[],说明是一维的;
//一维数组里面有几个元素?2个! 根据二维数组中列数来确定的!
int (*p)[2];
p = a; //既然p指向的是一个一维数组,所以要把一维数组的地址赋值给p;
//用数组指针来表示数组中各个元素的地址;
// for(i = 0; i < 3; i++)
// {
//// printf("p + %d = %p\n",i, p + i);
//// printf("&a[%d][0] = %p\n",i,&a[i][0]);
//
// for(j = 0; j < 2; j++)
// {
// printf("&a[%d][%d] = %p\n",i,j,&a[i][j]);
// //p + i表示第i+1个一维数组的地址;
// //在外面加上*(),可以立即为将一维数组的地址,转化为一维数组首元素的地址!
// printf("*(p + %d) + %d = %p\n",i,j, *(p + i) + j);
// printf("\n");
// }
// }
for(i = 0; i < 3; i++)
{
for(j = 0; j < 2; j++)
{
printf("a[%d][%d] = %d\n",i,j,a[i][j]);
//p + i表示第i+1个一维数组的地址;
//在外面加上*(),可以立即为将一维数组的地址,转化为一维数组首元素的地址!
printf("*(*(p + %d) + %d) = %d\n",i,j, *(*(p + i) + j));
printf("\n");
}
}
//通过以上发现,数组指针对数组的操作,只是将a换成了p;
return 0;
}
//1.a[i][j];
//2.*(a[i] + j); //首先记住a[i]表示第i+1个一维数组名!表示第i+1个一维数组首元素的地址;
//由行-->列; a[i] + j
//最后加上*()取值;
//3.*(*(a + i) + j); //这一种就是将上面的[]换成*();
//以上是通过数组名对数组进行操作;
//接下来用指针变量对数组进行操作;
// printf("&a[0][0] = %p\n",&a[0][0]);
// printf("a = %p\n",a);
// printf("a + 1 = %p\n",a + 1);
// printf("&a[1][0] = %p\n",&a[1][0]);
//p+1 ==>int
// int *p = &a[0][0];
// printf("p + 1 = %p\n",p + 1);
// printf("&a[1][0] = %p\n",&a[1][0]);
//p是一个指针;指向的一个数组?几维的?只有一个[],说明是一维的;
//一维数组里面有几个元素?2个! 根据二维数组中列数来确定的!
int (*p)[2];
p = a; //既然p指向的是一个一维数组,所以要把一维数组的地址赋值给p;
//用数组指针来表示数组中各个元素的地址;
// for(i = 0; i < 3; i++)
// {
//// printf("p + %d = %p\n",i, p + i);
//// printf("&a[%d][0] = %p\n",i,&a[i][0]);
//
// for(j = 0; j < 2; j++)
// {
// printf("&a[%d][%d] = %p\n",i,j,&a[i][j]);
// //p + i表示第i+1个一维数组的地址;
// //在外面加上*(),可以立即为将一维数组的地址,转化为一维数组首元素的地址!
// printf("*(p + %d) + %d = %p\n",i,j, *(p + i) + j);
// printf("\n");
// }
// }
for(i = 0; i < 3; i++)
{
for(j = 0; j < 2; j++)
{
printf("a[%d][%d] = %d\n",i,j,a[i][j]);
//p + i表示第i+1个一维数组的地址;
//在外面加上*(),可以立即为将一维数组的地址,转化为一维数组首元素的地址!
printf("*(*(p + %d) + %d) = %d\n",i,j, *(*(p + i) + j));
printf("\n");
}
}
//通过以上发现,数组指针对数组的操作,只是将a换成了p;
return 0;
}