如何声明多个数组?

时间:2018-07-12 22:44:31

标签: c arrays declaration

我是初学者。

如何声明100个不同的整数数组? 键入所有内容将不是一个好主意。

我的方法:我制作了结构数组,每个结构数组中都包含一个整数数组,但问题是每个结构数组都必须具有不同大小的整数数组,所以我现在该怎么办?

将整数数组的大小视为其所在结构数组数量的函数

1 个答案:

答案 0 :(得分:1)

一种方法是动态分配n int* s数组,然后使用刚分配的每个指针分配k int s数组指向每个单独的新int池,我在下面添加并评论了一个示例:

#include <stdio.h>
#include <stdlib.h>

int main( void )
{
    int** arr;
    /* create a pool of 100 int* */
    arr = malloc( 100 * sizeof(int*) );
    for( int i = 0; i < 100; ++i )
    {
        /* assign each pointer to an array of length i */
        arr[i] = malloc( i * sizeof(int) );
        for( int j = 0; j < i; ++j )
        {
            /* assign each integer to j (just so they aren't all the same) */
            arr[i][j] = j;
        }
    }

    /* check we've done everything correctly by printing every int allocated */
    for( int i = 0; i < 100; ++i )
    {
        for( int j = 0; j < i; ++j )
        {
            printf( "%d\n", arr[i][j] );
        }
    }

    /* free up the memory, this isn't required in such a small program, 
    but any memory dynamically allocated will leak if not free'd */
    for( int i = 0; i < 100; ++i )
    {
        free( arr[i] );
    }
    free( arr );
}