【问题标题】:Is there a way to print an entire array and not just printing the contents of the array by iterating through them?有没有办法打印整个数组,而不仅仅是通过遍历它们来打印数组的内容?
【发布时间】: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,它们仍然是数组的一部分。

标签: arrays c printf


【解决方案1】:

不,没有办法按照您的要求进行操作。您不能在 C 中对整个数组进行操作;您必须遍历并分别打印每个元素。在大多数情况下,C 中的数组表达式失去了它们的“数组特性”。

【讨论】:

  • 有没有允许对数组进行数值运算的库?
  • @MahmoudGabr:是的,但我不做数值工作,所以我没有任何好的例子。请注意,库仍然必须遍历数组。即使像 memcpystrcpy 这样的标准调用也必须遍历数组(尽管它们可能会在比单个元素更大的块中这样做)。
猜你喜欢
  • 2022-10-14
  • 2023-03-30
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 2021-10-19
  • 1970-01-01
  • 2021-07-10
  • 1970-01-01
相关资源
最近更新 更多