簡體   English   中英

c中的2d動態int數組

[英]2d dynamic int array in c

我想創建一個函數,用一行增加給定的 2d 動態 int 數組。 我看了幾個網站,指南,教程,但都不同,所以我現在很困惑。

二維數組有 2 個固定列。

我的代碼在這里:

int length=1;
void arrayinc(int** array, int x0, int x1)
{
    if (array == NULL)
        malloc(array, sizeof(int[2]));
    else
        realloc(array, (++length)*sizeof(int[2]));

    array[length-1][0]=x0;
    array[length-1][1]=x1;

    free(array);
}

int main()
{
    int** array=NULL;
    arrayinc(&array, 1, 2);
    // I will do some stuff after the increase
}

我希望有人可以幫助我,並解釋它是如何工作的!

抱歉我的英語和 malloc/realloc 知識很差。

函數參數是它的局部變量。 所以在函數中你處理原始參數的副本。

至少參數應聲明為

int*** array

如果列數是編譯時常量,則可以按以下方式定義該函數。

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

#define N   2

size_t arrayinc( int ( **array )[N], size_t n, int x0, int x1)
{
    int ( *tmp )[N] = realloc( *array, ( n + 1 ) * sizeof( int[N] ) );

    if ( tmp )
    {
        *array = tmp;
        ( *array )[n][0] = x0;
        ( *array )[n][1] = x1;
        ++n;
    }

    return n;
}

int main(void) 
{
    int ( *array )[N] = NULL;
    size_t n = 0;

    for ( size_t i = 0; i < 10; i++ )
    {
        n = arrayinc( &array, n, ( int )( 2 * i ), ( int )( 2 * i + 1 ) );
    }

    for ( size_t i = 0; i < n; i++ )
    {
        printf( "%d\t%d\n", array[i][0], array[i][1] );
    }

    free( array );

    return 0;
}

程序輸出是

0   1
2   3
4   5
6   7
8   9
10  11
12  13
14  15
16  17
18  19

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM