【发布时间】:2021-11-03 16:19:08
【问题描述】:
在C 中,有没有办法打印整个数组。例如,从二维数组中打印(完整)每一行,而不是遍历其内容并独立打印它们?下面是我想象的代码的示例:
int main() {
int Numbers[4][4] = {{5, 1, 1, 6},
{2, 2},
{3, 3, 3},
{4, 4, 4}};
for (int i=0; i<=3; i++){
printf("%i \n", Numbers[i]);
}
return 0;
}
我希望输出如下:
{5, 1, 1, 6}
{2, 2}
{3, 3, 3}
{4, 4, 4}
但是,当运行代码时,我得到以下输出
-414054224
-414054208
-414054192
-414054176
【问题讨论】:
-
Numbers[i](对于任何有效的i)是一个数组,%i的格式是打印一个single @987654328 @ 价值。对于正在打印的值,数组将衰减为指向其第一个元素的指针。并且打印的是这个指针(使用错误的格式)。如果编译器没有警告您将错误的参数传递给printf,您需要启用更多警告。另请注意,数组具有固定 大小,您将大小声明为4,这意味着数组将具有4元素。 -
简而言之:如果要打印数组,就必须遍历数组,分别打印每个元素。
-
另外计算机也不知道你只想打印{2,2}。 这是一个 4x4 数组,其中包含 16 个数字。多余的数字是 0,它们仍然是数组的一部分。