在函数中使用变长数组作为参数时
int sum(int n, int a[n]);
Run Code Online (Sandbox Code Playgroud)
很容易理解第一个参数(n)指定第二个参数(a)的长度.但遇到另一个用于VLA的原型作为参数
int sum(int n, int a[*]);
Run Code Online (Sandbox Code Playgroud)
真的很难理解为什么*用而不是在n里面[]?
我是Java开发人员,而不是C程序员.我正在尝试调用一些接收2D数组的函数,尝试如下:
#include <stdio.h>
int foo(int mat[][N])
{
printf("%d",N); /* <--- here error */
}
int main()
{
int a[5][5] =
{
{1, 2, 3, 4,5},
{1, 5, 5, 5,2},
{1, 4, 30,4,2},
{1, 2, 2,2, 2},
{1,1, 1,1, 2 }
};
foo(a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是编译器说:
'N'未声明(首次使用此功能)
我必须有签名: int foo(int mat[][N])
那我该如何传递2D数组呢?