鱼C论坛

 找回密码
 立即注册
查看: 1342|回复: 4

[已解决]震惊!二维数组归零后,有些值却不为零

[复制链接]
发表于 2020-7-29 21:21:02 | 显示全部楼层 |阅读模式
4鱼币
Dev-C++,能帮我看一下吗,为什么二维数组赋值为 0 后,打印出来的值存在越界的随机数字,而且总是那几个固定的位置出现问题,谢谢啦!

我利用循环,将c数组的每一项强制赋值 0 后,才解决问题。但是很好奇为什么会出现这种情况。
最佳答案
2020-7-29 21:21:03
变长数组还是不要这样清零了吧……

代码第一行加上
#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 吧。
N7C_XLVU~$9ZZCYN}M)DE_N.png

最佳答案

查看完整内容

变长数组还是不要这样清零了吧……[hr] 代码第一行加上 数组声明后面加上[hr] 没用过变长数组,不过貌似可能会出问题,还是乖乖 malloc + memset 吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-29 21:21:03 | 显示全部楼层    本楼为最佳答案   
变长数组还是不要这样清零了吧……

代码第一行加上
#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 吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-29 21:52:33 | 显示全部楼层
你这是变长数组,不能这样初始化
用循环赋初始值或还有一个memset,memset函数原型:void * memset(void *ptr, int value, size_t num)
感兴趣可以搜一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-29 22:34:49 | 显示全部楼层
本帖最后由 风过无痕1989 于 2020-7-29 22:36 编辑

#include<stdio.h>

int main()

{
        int i,j,m;
    int a[4][5] = {0};
    int b[5][8] = {0};
    int c[4][8] = {0};

    for (i = 0;i < 4;i++)
    {
        for (j = 0;j < 5;j++)
        {
            printf("%d",a[i][j]);
            printf(", ");
        }
            printf("\n");
    }
            printf("\n");
                             
    for (i = 0;i < 5;i++)
    {
        for (j = 0;j < 8;j++)
        {
            printf("%d",b[i][j]);
            printf(", ");
        }
            printf("\n");
    }
            printf("\n");
            
    for (i = 0;i < 4;i++)
    {
        for (j = 0;j < 9;j++)
        {
            printf("%d",c[i][j]);
            printf(", ");
        }
            printf("\n");
    }

}

******************************************************************************

用 DEV_C++ 清零,没有问题


                               
登录/注册后可看大图


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-30 00:17:09 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-7-29 21:21
变长数组还是不要这样清零了吧……

代码第一行加上
数组声明后面加上

谢谢! 又长知识了,第一次听到“变长数组”这个名词,去百度了一番。

看来我选择的头像没有错,只有努力攀登,才能到达顶峰
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 10:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表