【问题标题】:Pass multidimensional array with variable size as argument of function将可变大小的多维数组作为函数的参数传递
【发布时间】:2021-08-09 02:04:39
【问题描述】:

我有这个代码:

int m, n;
cin>>m>>n;
double A[m][n];
//read values for A

如何将A 传递给函数?

【问题讨论】:

    标签: c++ function multidimensional-array


    【解决方案1】:

    可变长度数组是 C 功能,标准 C++ 不支持。然而,一些编译器如 gcc 支持它作为扩展。

    在那些支持它的编译器上,您需要将数组维度作为参数传递,并将这些参数用作数组大小:

    void handle_array(int m, int n, double A[m][n])
    {
        ...
    }
    

    请注意,这只需要多维数组,而不是第一个维度。你也可以这样传递:

    void handle_array(int m, int n, double A[][n])
    {
        ...
    }
    

    或等效:

    void handle_array(int m, int n, double (*A)[n])
    {
        ...
    }
    

    【讨论】:

    • 我感觉这样遗漏了一些信息,比如m是唯一需要单独传入的维度,写数组参数时必须指定n但是不是 m。更重要的是,它遗漏了一种不依赖编译器扩展的更惯用的 C++ 方法。
    • @sweenish 是的,添加进去了。
    猜你喜欢
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多