我不知道为什么我们必须(int *)
在二维数组的情况下使用类型转换?我想知道的另一件事是,为什么我们不能使用*(*(p+i)+j))
以下代码访问二维数组?总是需要使用p + col*i + j
吗?为什么我不能使用*(*(p+i)+j))
whenp
包含数组的基地址并且*(*(p+i)+j))
等价于a[i][j]
?
先感谢您。
main()
{
int a[3][4] = {
1,2,3,4,
5,6,7,8,
9,0,1,6
};
int *p,i,j;
p=(int *)a; // this is my doubt why did we use int *
for(i=0;i<3;i++)
{
for(j=0;j<4;j++) {
printf("%d",*(*(p+i)+j)); // here is my 2nd doubt
}
}
}