1

所以基本上,我試圖做的是傳遞數組作爲參數。我想出了這樣的想法:傳遞多維數組作爲參數c

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

int x; 

void function(int array[][x]){ 
    //stuff here 
} 

int main(){ 
    x = random(10); 
    int array[10][x]; 
    //initialize array 
    function(array[10][x]); 
} 

我想這應該工作,但它給了我一張紙條:

預期 'INT(*)[(無符號整數)(X)',但參數是'int'類型

任何幫助,將不勝感激。的

function(array[10][x]) 

+0

當然,數組聲明也是無效的,因爲x在編譯時是未知的。如果我錯了,請糾正我,但是您爲此拒絕使用malloc。它被稱爲'VLA'(可變長度數組),它支持C99向前(但不在C++中) –

+1

@B_o_b:我有一種感覺,我正要學習新的東西。謝謝。留下像我這樣的人的評論。 –

+0

@ another.anon.coward:int * array =(int *)malloc(10 * x)' –

回答

2

使用

function(array) 

,而不是你可能需要閱讀this post我做了幾天就回來。

3

您正在錯誤地將參數傳遞給函數。 正如指出的那樣,它應該是function(array)
其他意見:
1.使用random()應該可能是random()%10;而不是random(10);,除非它的一些非標準功能。
2. int main()應該是int main(void)int main(int argc, char **argv)
3.您應該mainreturn 0return EXIT_SUCCESS返回一個int值

附加說明:
請注意,你可能無法得到的實際尺寸函數中的數組。可能你應該考慮傳遞數組的維數,以防你打算在函數中使用它。

希望這會有所幫助!