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]);
此外,请确保启用了所有编译器警告,您的代码应至少生成一个警告(地址与期望
%d
的int
格式说明符不兼容)。关于c - 将整数分配给数组会导致垃圾,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21048908/