代码(使用编译gcc -std=c99
)...
#include <stdio.h>
#include <stdlib.h>
typedef int mytype[8][8];
int main(void)
{
mytype CB;
for (int r=0; r<8; r++) {
for (int c=0; c<8; c++) {
CB[r][c] = 5;
}
}
mytype *CB2 = &CB;
for (int r=0; r<8; r++) {
for (int c=0; c<8; c++) {
printf("%d ",*CB2[r][c]);
}
printf("\n");
}
return 0;
}
打印stdout
错误的数据(只有第一行的数据是正确的),这些数据应该是 all 5
。我发现,其他数组项的指针在内存中有所偏移,但我不明白为什么。
我希望目的很明显:CB
在第一个循环中设置数组的内容,然后在第二个循环中打印出来。这只是模型 - 指针的东西在那里,因为我需要它。
我究竟做错了什么?