【问题标题】:error in passing the 2D array to a function in c++将二维数组传递给 C++ 中的函数时出错
【发布时间】:2019-07-14 20:02:31
【问题描述】:

当我将 dp 数组传递给函数时,函数中出现异常错误。

int n,k;
int solve(int n, int k, int dp[n+1][k+1]) 
{ 
  // some code
} 
int main(){
  int t; cin>>t;
  while(t--){
     cin>>n;
     cin>>k;
     int dp[n+1][k+1];
    memset(dp, -1,sizeof(dp));
    cout<<solve(n,k,dp)<<endl;
  }
return 0;
}

为什么会这样 错误:在“+”标记之前使用函数体外部的参数 整数求解(整数 n,整数 k,整数 dp[n+1][k+1]) 我无法理解为什么会出现此错误

【问题讨论】:

  • 因为它不是有效的 C++。
  • 让我引导您到std::vector,它可以以代码尝试使用 C 样式数组的方式使用。
  • 这里的answer 将有助于学习如何正确地将数组传递给函数

标签: c++ arrays function 2d


【解决方案1】:

在 C++ 中,数组大小必须是编译时常量

这不是合法的 C++

int dp[n+1][k+1];

因为nk 是变量而不是常量。

这是不合法的 C++

int solve(int n, int k, int dp[n+1][k+1]) 

出于完全相同的原因。

【讨论】:

    【解决方案2】:

    在 C++ 中,数组的大小不能动态更改。如果您正在阅读尺寸,这将导致问题。您可以硬编码 n,k 的值以进行测试

    int dp[10][10];
    int solve(int n, int k, int dp[10][10])
    

    或尝试使用向量。

    【讨论】:

      猜你喜欢
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 2021-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多