首页 > 解决方案 > C中int数组的动态数组

问题描述

如何在 main 外部声明一个 int 数组数组,然后在知道要构建的数组数组的长度(如果已知一维)后在 main 内部构建。

例如,如果数组应该是array[numberofargs][2],其中维度2是已知的,但numberofargs在 main 执行之前不知道。

标签: cdynamic-memory-allocationmulti-dimensional-scaling

解决方案


一种方法是在文件范围内声明例如一个指针,例如

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;
}

推荐阅读