首页 > 解决方案 > 将二维数组传递给 C++ 中的函数时出错

问题描述

当我将 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;
}

为什么会出现这个错误:在 '+' token int solve(int n, int k, int dp[n+1][k+1]) 之前使用函数体外部的参数 我无法理解为什么会出现这个错误

标签: c++arraysfunction2d

解决方案


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

这不是合法的 C++

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

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

这不是合法的 C++

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

出于完全相同的原因。


推荐阅读