[英]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];
因為n
和k
是變量而不是常量。
這是不合法的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.