【问题标题】:Initializing a multidimensional array, and then printing contents in C初始化一个多维数组,然后在 C 中打印内容
【发布时间】:2012-05-15 15:59:45
【问题描述】:
#include <stdio.h>

int main (void)
{

    int weiners[3][2] = {
                       {5, 10, 8},
                       {8, 4, 7},
                       {3, 1, 2},
                       {0, 7, 9}
                     };
    int x,y;

    printf("Weiners:\n_______\n");

    for(x=0;x<=3;++x){
        for(y=0;y<=2;++y){
        printf("%i, ", weiners[x][y]);
        }
        printf("\n");
    }

    return 0;

}

这只是为了简单地创建一个小的多维数组,然后使用循环打印内容。它的格式正确,前三列是正确的,后面的数字非常不正确。我不确定这里有什么问题。

http://i.stack.imgur.com/TSX2M.png

【问题讨论】:

    标签: c arrays multidimensional-array


    【解决方案1】:

    您正在定义一个 int[3][2] 并使用 4 x 3 项对其进行初始化,因此一旦循环到达第 6 个值之后,最后一项就未定义。

    gcc 抱怨它:

    array.c: In function `main':
    array.c:7: warning: excess elements in array initializer
    array.c:7: warning: (near initialization for `weiners[0]')
    array.c:8: warning: excess elements in array initializer
    array.c:8: warning: (near initialization for `weiners[1]')
    array.c:9: warning: excess elements in array initializer
    array.c:9: warning: (near initialization for `weiners[2]')
    array.c:10: warning: excess elements in array initializer
    array.c:10: warning: (near initialization for `weiners[3]')
    array.c:10: warning: excess elements in array initializer
    array.c:10: warning: (near initialization for `weiners')
    

    【讨论】:

      【解决方案2】:

      您的数组需要为 [4][3]。

      【讨论】:

      • 好答案。但是慢 90 秒!
      【解决方案3】:

      您的数组声明不正确(它是 4x3 而不是 3x2):

      int weiners[4][3] = {
                         {5, 10, 8},
                         {8, 4, 7},
                         {3, 1, 2},
                         {0, 7, 9}
                       };
      

      或者,您可以使用实际上是 3x2(而不是 4x3)的数组,然后修复您的 for 循环以使用匹配的索引:

      for(x=0;x<3;++x) {
          for(y=0;y<2;++y) {
      

      【讨论】:

      • @JonMartin 好吧,更多的是两者不匹配......我不确定哪个是“正确的”
      • 感谢您的帮助。我刚开始在 C 中使用 md 数组,我明白我做错了什么。再次感谢。
      【解决方案4】:

      你输入了错误的行数和列数,给出的格式是:-

      int array[rows][colums]
      

      这里行=4,列=3;

      相应地更改循环。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-11
        • 2020-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-04
        • 2011-04-03
        相关资源
        最近更新 更多