for (x=1;x<4;x++)
    {
            for (y=1;y<5;y++)
            {
                    if (x==1)
                    {
                            feld[1][y] = y;
                            printf("Feld gespeichert: %d",&feld[1][y]);
                    }
                    else
                    {
                            feld[x][y] = 0;
                    }
            }

    }

输出为:
Feld gespeichert: 915094680Feld gespeichert: 915094684Feld gespeichert: 915094688Feld gespeichert: 915094692S

宣言:
int main(void)
{
int x,y,groesse;
int feld[4][5]; // Initialisierung Spielfeld und Schleifenvar
(...)

我好像不明白为什么。for循环将y增加1,而不是1.321252151252151或任何值,而不管y是整数。为什么我会有这些奇怪的价值观?

最佳答案

您打印的是地址,而不是值。
放下&

printf("Feld gespeichert: %d", feld[1][y]);

此外,请确保启用了所有编译器警告,您的代码应至少生成一个警告(地址与期望%dint格式说明符不兼容)。

关于c - 将整数分配给数组会导致垃圾,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21048908/

10-11 16:45