【发布时间】:2014-05-28 18:46:04
【问题描述】:
我试图理解 C 处理数组的方式,在这种情况下,通过读取一个二维数组,就好像它是一个一维数组一样。
鉴于这个简单的 C 程序
#include <stdio.h>
int main(int argc, char *argv[]){
int array[4][4];
int i, j;
for(i = 0; i < 4; i++){
for(j = 0; j < 4; j++){
array[i][j] = (i+1)*(j+1);
printf("%d ", array[i][j]);
}
printf("\n");
}
for(i = 0; i < 16; i++){
printf("%d ", array[i]);
}
printf("\n");
}
我得到这个奇怪的输出。
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
56319776 56319792 56319808 56319824 56319840 56319856 56319872 56319888 56319904 56319920 56319936 56319952 56319968 56319984 56320000 56320016
在第二个for 循环中打印了什么?
【问题讨论】:
-
在垃圾打印中打印数组地址。
-
这个“垃圾”实际上不是指向存储值的地址(或指针)吗?如果我们做
&(array[i]),我们会得到什么?谢谢。
标签: c arrays multidimensional-array