簡體   English   中英

傳遞使用動態內存分配創建的二維數組

[英]Passing 2 dimensional array created using dynamic memory allocation

我使用動態內存分配在C中創建了一個二維數組。

int **x;

x=(int **)malloc(2*sizeof(int)); 

for(i=0;i<k;i++)

x[i]=(int*)malloc(K*sizeof(int));

現在,讓我們將此數組作為參數傳遞給名為Sum的函數。

Sum(x);

在函數Sum(int *x[]) ,方括號中的尺寸不能留空,並且我也無法使用動態變化的參數進行初始化。

您能給我看看解決這個問題的方法嗎?

在函數Sum(int *x[]) ,方括號中的尺寸不能留空

當然可以; 在函數參數聲明的上下文中, T a[N]T a[]解釋為T *a 所有三種聲明a作為指針T ,而不是作為陣列T

無論如何,您都需要將數組維作為單獨的參數傳遞,以便Sum可以正確地完成其工作,但是您當然可以將x聲明為int *x[]甚至int **x

如果使用的是支持VLA的C99編譯器或C2011編譯器,則可以使用運行時變量來調整數組大小:

int Sum( size_t cols, int *x[cols] )

甚至

int Sum( size_t rows, size_t cols, int x[rows][cols] ) 

暫無
暫無

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

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