c - C中int数组的动态数组
问题描述
如何在 main 外部声明一个 int 数组数组,然后在知道要构建的数组数组的长度(如果已知一维)后在 main 内部构建。
例如,如果数组应该是array[numberofargs][2]
,其中维度2
是已知的,但numberofargs
在 main 执行之前不知道。
解决方案
一种方法是在文件范围内声明例如一个指针,例如
int ( *array )[2] = NULL;
然后在其中一个函数中为数组分配内存。例如
#include <stdlib.h>
int (*array)[2] = NULL;
int main(void)
{
int numberofargs = 5;
array = malloc( sizeof( int[numberofargs][2] ) );
//...
free( array );
return 0;
}
或者以下方式
#include <stdlib.h>
int **array = NULL;
int main(void)
{
int numberofargs = 5;
array = malloc( numberofargs * sizeof( *array ) );
for ( int i = 0; i < numberofargs; i++ )
{
array[i] = malloc( sizeof( *array[i] ) );
}
//...
for ( int i = 0; i < numberofargs; i++ )
{
free( array[i] );
}
free( array );
return 0;
}
推荐阅读
- r - 如何显示线性图的数据标签
- node.js - 在 Express 中使用中间件功能的正确方法
- git - GitLab 页面 - 如何使用任何 repo 名称?
- javascript - jquery将元素添加到第一个孩子?
- c++ - 将二维数组传递给 C++ 中的函数时出错
- woocommerce - 当我将产品添加到购物车时,产品价格变为零(0 美元)
- angular - 使用 angular8 创建的 Outlook 365 加载项无法删除使用 ngx-cookie-service 创建的 cookie
- flutter - 可变大小的 ListView 或 SingleChildScrollView
- matrix - 对 Octave 中的每个单元格应用一个函数
- php - Laravel 5.8:尝试使用从数据库中提取的数据来制作 where 模型