int myFunc(int a, int b, int c, int d[][c]) {
//code
}
我试过这个:
int myFunc(int, int, int, int *);
而且:
int myFunc(int, int, int, int *[int]);
而且:
int myFunc(int, int, int, int **);
但它们似乎都不起作用。我认为我无法确定最后一个参数的类型。任何帮助将不胜感激。
答案 0 :(得分:5)
现在试试这个
int myFunc(int a, int b, int c, int (*)[c]);
答案 1 :(得分:3)
如果您想跳过签名的所有参数名称,那么从C99标准开始,您就可以使用它:
int myFunc(int, int, int, int [][*]);
甚至与haccks的answer结合使用:
int myFunc(int, int, int, int (*)[*]);
请注意,这两种形式都是等价的,更像是偏好问题,需要采取哪种形式。
[*]
表示数组大小是从其先前的参数中获取的,您无需确切地确定需要采用哪一个。可能会有不止一个,因此遵循声明:
int someFunc(int m, int n, int [][m+n]);
在C中是合法的。
这是基本程序,所以你可以看到它适合你:
#include <stdio.h>
int myFunc(int, int, int, int [][*]);
int myFunc(int a, int b, int c, int d[][c]) {
return d[0][0];
}
int main(void)
{
printf("%d\n", myFunc(1, 1, 2, (int[1][2]){{3, 5}}));
return 0;
}