You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言入门者求助:如何用最少代码行数创建N×N零矩阵

生成N×N零矩阵的简洁C语言实现

嘿,作为从MATLAB转过来的C语言初学者,我完全懂你想要像zeros(N)那样一行搞定的爽感!在C里其实也有几种超简洁的实现方式,根据你的N是编译期固定还是运行时可变,我给你分情况说:

情况1:N是编译期已知的常量

如果你的N是固定值(比如你提前知道要生成5×5的矩阵),那一行代码就能搞定:

int matrix[N][N] = {0};

C语言的规则是:当你用{0}初始化数组时,所有未明确赋值的元素都会自动被初始化为0,完美实现零矩阵,和MATLAB的zeros(N)一样省心!

情况2:N是运行时输入的变量

如果N需要程序运行时由用户输入或者动态确定,那我们可以用动态内存分配,这里推荐用calloc(它会自动把分配的内存初始化为0,比malloc+memset少写一行),两行就能搞定:

int **matrix = calloc(N, sizeof(int*));
for(int i=0; i<N; matrix[i++] = calloc(N, sizeof(int)));

要是追求极致的行数,甚至可以把逻辑压缩得更紧凑(虽然可读性稍微降一点,但确实更短):

int **matrix = calloc(N, sizeof(int*));
for(int i=0; i<N; matrix[i++] = calloc(N, sizeof(int)));

哦对了,用完动态分配的矩阵别忘了用循环free每个子数组再free主数组,避免内存泄漏哦!

额外小技巧:用一维数组模拟二维矩阵

如果不想搞二级指针,也可以用一维数组模拟,同样一行分配+初始化:

int *matrix = calloc(N*N, sizeof(int));

访问的时候用matrix[i*N + j]来代替matrix[i][j],也能实现零矩阵,代码更短!

内容的提问来源于stack exchange,提问作者john

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 13:18:14