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值

附加说明:
请注意,你可能无法得到的实际尺寸函数中的数组。可能你应该考虑传递数组的维数,以防你打算在函数中使用它。

希望这会有所帮助!