簡體   English   中英

在函數內動態分配2D數組(使用指針返回分配對象的地址)

[英]Dynamic allocation of 2D array within function (using pointers to return adress of allocated object)

我想知道如何使用函數參數將指針傳遞給動態分配的數組。 該函數應該分配10x10數組(為簡單起見,跳過了檢查)。 這可能嗎? 我究竟做錯了什么? 提前致謝。

int array_allocate2DArray ( int **array, unsigned int size_x, unsigned int size_y)
{
    array = malloc (size_x * sizeof(int *));

    for (int i = 0; i < size_x; i++)
        array[i] = malloc(size_y * sizeof(int));

    return 0;
}

int main()
{
    int **array;
    array_allocate2DArray (*&array, 10, 10);
}

當我遇到類似的問題時(我正在尋找一種在C中動態分配字符串數組的方法),我碰到了這篇文章。 我更喜歡從函數返回數組指針。 以下對我有用(我將其調整為您的整數數組)。 我為每個值任意設置99,這樣我就可以看到它們在main中打印出來了。

int **array_allocate2DArray(unsigned int size_x, unsigned int size_y)
{
        int i;
        int **arr;

        arr = malloc(size_x*(sizeof(int*)));

        for (i=0 ; i<size_x ; i++){
                arr[i] = malloc(size_y);
                *arr[i] = 99;
        }

        return arr;

}

int main(void)
{
        int i;
        int **arr;

        arr = array_allocate2DArray(10, 10);

        for (i=0 ; i<10 ; i++){
                printf("%d\n", *arr[i]);
                free(arr[i]);
        }
        free(arr);

        return 0;
}

嘗試這樣的事情:

int array_allocate2DArray (int ***p, unsigned int size_x, unsigned int size_y)
{
    int **array = malloc (size_x * sizeof (int *));

    for (int i = 0; i < size_x; i++)
        array[i] = malloc(size_y * sizeof(int));

    *p = array;
    return 0;
}


int **array;
array_allocate2DArray (&array, 10, 10);

我使用了臨時p來避免混亂。

暫無
暫無

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

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