#include <stdio.h>
#include <conio.h>
int main()
{
/*声明一个3维数组A并初始化*/
int A[2][3][4]={{{1,2,3,4},{5,6,7,8},{9,10,11,12}},
{{13,14,15,16},{17,18,19,20},{21,22,23,24}}};
int*pA=A[0][0];
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
for(int k=0;k<4;k++)
printf("%d ",*(pA+i*3*4+j*4+k));
return 0;
}
我是初学者在书上看到这个例题 我看不明白,
我是指针输出 pA+i*3*4+j*4+k; 这里是指针运算
我认为i*3*4+j*4+k可能等于同一个数 输出可能重复输出
数组中的同一个元素。我就是这里不明白 ,可是这例题在书中出现
肯定有它的妙处,希望前辈能给我解释下并说明为什么。
那个输出语句若改成 printf("%d ",A[i][j][k]); 这我就理解了。
假如 数组是int A[10][10][10];
i=0;j=2;k=4;
结果是pA+12;
i=1;j=0;k=0;
结果是pA+12;
输出结果会不会 重复??
i=0;j=2;k=4; 这个不符合 因为 k 值时 0 1 2 3 所以如果是4 的话 就等于要进位 j 就等于3了
同理也要进位 所以循环里不存在这个你说的情况
i=1;j=0;k=0;