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