[英]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.