【发布时间】:2013-01-06 23:55:37
【问题描述】:
这是代码
int x, y, n, i, j, l, m, o;
printf ("podaj szerokosc planszy na jakiej chcesz zagrac\n");
scanf ("%d", &x);
printf ("podaj dlugosc planszy na jakiej chcesz zagrac\n");
scanf ("%d", &y);
int plansza [x][y];
memset(plansza, 0, sizeof plansza);
int plansza2 [x][y];
memset(plansza2, 0, sizeof plansza2);
printf("plansza: \n");
for(j=0;j<x;j++)
{
for(l=0;l<y;l++)
{
printf("%d",plansza[x][y]);
printf(" ");
}
printf("\n");
}
printf("plansza2: \n");
for(m=0;m<x;m++)
{
for(o=0;o<y;o++)
{
printf("%d",plansza2[x][y]);
printf(" ");
}
printf("\n");
}
结果如下:
不知道为什么memset() 根本不起作用,我完全不知道为什么。我应该怎么做才能用零填充数组?
【问题讨论】:
-
j、l、m和o是什么? -
sizeof 不会像你想象的那样工作,它会返回代表数组的指针的大小,而不是数组的长度。
-
@Ben:
sizeof产生数组的总大小(不是数组中元素的数量,也不是指针的大小)。 -
@Ben:这是一个数组。没有发生指针衰减。数组不是指针,即使隐式转换为指针。
-
我向你保证;
memset工作。