簡體   English   中英

將2D數組傳遞給C ++中的函數時出錯

[英]error in passing the 2D array to a function in 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;
}

為什么會出現此錯誤:在“ +”標記之前使用函數外部的參數intsolve(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])

或嘗試使用向量代替。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM