将 2D 数组传递给 C++ 中的函数时出错

error in passing the 2D array to a function in c++

本文关键字:函数 出错 C++ 2D 数组      更新时间:2023-10-16
当我

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

为什么会这样错误:在"+"标记之前使用函数体外部的参数 int solve(int n, int k, int dp[n+1][k+1](我不明白为什么会出现此错误

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

这是不合法的C++

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

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

这不是合法C++

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

出于完全相同的原因。

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

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

或尝试改用向量。