c - 二维数组,其中较大的数组是动态的,较小的数组不是
问题描述
在C语言中,如果我不知道编译时的行数,但我知道列数,我该如何初始化数组?
如果我想要一个非动态分配的数组,我输入,int 2D_array[128][128];
但如果我想要一个动态分配的数组,我输入
int** 2D_array = (int**)calloc(num_rows, sizeof(int*));
for (int i = 0; i < num_rows); i++) {
2D_array[i] = (int*)calloc(num_columns, sizeof(int));
}
但是,如果我想要一个二维数组,其中行是动态的,但列不是动态的?我的直觉是int* 2D_array[128];
,但这只会给我一个 128 行和动态分配列的二维数组。
解决方案
在这里,您尝试访问 2D_array[row][column]。只有在引用行地址后才能访问任何列值。因此,如果我们更改为 2D_array[column][row],这是可能的。但是我们需要在其余应用程序中更改数组的值访问逻辑。
推荐阅读
- python - 如何在kivy中获取小部件位置
- ios - iOS PKCS#7 如何解密 P7M 文件?现在有 .pfx 文件
- java - 继承,为什么打印结果为空?
- yii2 - Yii2 mPdf Kartik:设置纸张的高度和宽度
- javascript - 单击锚链接时手风琴选项卡自动打开
- java - Java:从密钥库文件中确定密钥库的类型
- spring-boot - 在 Junit ClassRule 中访问 spring-boot application.properties 元素
- scala - Kudu Import 上的 GeoMesa 出现空间数据错误
- racket - 在使用完整的 Rosette 语言时,有哪些方法可以识别未提升的 Racket 结构?
- numba - 由于 libllvmlite.dylib 错误,UMAP 在 py2app 构建时失败