相关疑难解决方法(0)

为什么对函数的VLA数组参数使用星号"[*]"而不是整数?

在函数中使用变长数组作为参数时

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里面[]

c arrays function function-parameter

33
推荐指数
1
解决办法
1691
查看次数

以2D数组作为参数调用函数

我是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数组呢?

c

7
推荐指数
1
解决办法
115
查看次数

标签 统计

c ×2

arrays ×1

function ×1

function-parameter ×1