我正在尝试学习 C,但我被以下代码卡住了。从我对C的基础知识中我了解到,数组名本身就是一个指向数组第一个元素的指针。并且二维数组中的元素一个接一个地存储。所以我尝试使用数组名称作为指针打印一维数组和二维数组中元素的值。但是对于Code 1
它来说,它按我的预期工作。但是Code 2
给出了意想不到的结果(它给出了每一行的起始地址)。发生这种情况的原因是什么?我认为我的理解有问题。任何人都可以澄清错误。
// Code 1
//-------
#include <stdio.h>
int main () {
int array[2][3] = {{5, 7, 9}, {2, 5, 77}};
int j;
for (j=0; j < 6; j++)
printf("%d\t", *(array+j));
return 0;
}
//Code 2
//------
// #include <stdio.h>
// int main () {
// int array[6] = {5, 7, 9, 2, 5, 77};
// int j;
// for (j=0; j < 6; j++)
// printf("%d\t", *(array+j));
// return 0;
// }