我想在C语言中反复对一个大的2d数组进行调零.这就是我目前所做的:

// Array of size n * m, where n may not equal m
for(j = 0; j < n; j++)
{
    for(i = 0; i < m; i++)
    {  
        array[i][j] = 0;
    }
}

我try 过使用Memset:

memset(array, 0, sizeof(array))

但这只适用于1Darray.当我打印2D数组的内容时,第一行是零,但随后我得到了一个随机大数负载,它崩溃了.

推荐答案

memset(array, 0, sizeof(array[0][0]) * m * n);

其中mn是二维数组的宽度和高度(在你的例子中,你有一个正方形的二维数组,所以m == n).

C++相关问答推荐

C中的ATONE会扰乱SEN/CLUTE GMS应用程序中的其他字符串

为什么在C中设置文件的位置并写入文件,填充空字符?

如何在C中只使用一个带双方括号([i][j])访问语法的malloc来分配动态大小的2d数组?

核心转储文件中出现奇怪的大小变化

C是否用0填充多维数组的其余部分?

Rust FFI--如何用给出返回引用的迭代器包装C风格的迭代器?

如何将常量char*复制到char数组

CSAPP微型shell 实验室:卡在sigprocmask

如何使用C for Linux和Windows的标准输入与gdb/mi进行通信?

错误:包含文件时类型名称未知

为什么中断函数会以这种方式影响数组?

S的这种管道实施有什么问题吗?

cairo 剪辑区域是否存在多个矩形?

如何在双向表中实现线程安全,每个条目仅使用4位,同时避免任何全局锁?

我正在try 将QSORT算法实现为C++中的泛型函数

Fscanf打印除退出C代码为1的程序外的所有内容

STM32 FATFS用户手册(Um1721)中的代码正确吗?

Malloc和对齐

无法将字符串文字分配给 C 中的字符数组

macos/arm64 上地址空间不使用第一位吗?