我将为此function制作什么function原型?
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 **);
但它们似乎都不起作用。 我认为我无法确定最后一个参数的类型。 任何帮助将不胜感激。
现在尝试一下
int myFunc(int a, int b, int c, int (*)[c]);
如果您想跳过签名的所有参数名称,那么从C99 Standard开始,您可以使用:
int myFunc(int, int, int, int [][*]);
甚至结合haccks的答案 :
int myFunc(int, int, int, int (*)[*]);
请注意,这两种forms都是等价的,更像是偏好问题,需要采取哪种forms。
[*]
表示数组大小是从其先前的参数中获取的,您无需确切地确定需要采用哪一个。 可能会有不止一个,因此遵循以下声明:
int someFunc(int m, int n, int [][m+n]);
是合法的C.
这是基本程序,所以你可以看到它适合你:
#include 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; }