震惊!二维数组归零后,有些值却不为零
Dev-C++,能帮我看一下吗,为什么二维数组赋值为 0 后,打印出来的值存在越界的随机数字,而且总是那几个固定的位置出现问题,谢谢啦!我利用循环,将c数组的每一项强制赋值 0 后,才解决问题。但是很好奇为什么会出现这种情况。 变长数组还是不要这样清零了吧……
代码第一行加上#include<string.h>
数组声明后面加上memset(a, 0, i * m * sizeof(int));
memset(b, 0, m * j * sizeof(int));
memset(c, 0, i * j * sizeof(int));
没用过变长数组,不过貌似可能会出问题,还是乖乖 malloc + memset 吧。 你这是变长数组,不能这样初始化
用循环赋初始值或还有一个memset,memset函数原型:void * memset(void *ptr, int value, size_t num)
感兴趣可以搜一下
本帖最后由 风过无痕1989 于 2020-7-29 22:36 编辑
#include<stdio.h>
int main()
{
int i,j,m;
int a = {0};
int b = {0};
int c = {0};
for (i = 0;i < 4;i++)
{
for (j = 0;j < 5;j++)
{
printf("%d",a);
printf(", ");
}
printf("\n");
}
printf("\n");
for (i = 0;i < 5;i++)
{
for (j = 0;j < 8;j++)
{
printf("%d",b);
printf(", ");
}
printf("\n");
}
printf("\n");
for (i = 0;i < 4;i++)
{
for (j = 0;j < 9;j++)
{
printf("%d",c);
printf(", ");
}
printf("\n");
}
}
******************************************************************************
用 DEV_C++ 清零,没有问题
https://xxx.ilovefishc.com/album/202007/29/223302dbwbnuk1rznb2inr.jpg
永恒的蓝色梦想 发表于 2020-7-29 21:21
变长数组还是不要这样清零了吧……
代码第一行加上
数组声明后面加上
谢谢! 又长知识了,第一次听到“变长数组”这个名词,去百度了一番。
看来我选择的头像没有错,只有努力攀登,才能到达顶峰
页:
[1]