c++ - 将二维数组传递给 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++ 中,数组大小必须是编译时常量。
这不是合法的 C++
int dp[n+1][k+1];
因为n
和k
是变量而不是常量。
这不是合法的 C++
int solve(int n, int k, int dp[n+1][k+1])
出于完全相同的原因。
推荐阅读
- javascript - 在 ASP.NET C# 中刷新浏览器时如何使倒数计时器不重置?
- php - filter_var($url, FILTER_FLAG_HOST_REQUIRED) 总是返回 false
- python - 如何在python dict或list中打印实际的unicode字符
- mongodb - 如何根据 MongoDB 中的 ID 从多个集合中删除文档?
- excel - VBA Excel - 更改一个单元格中的文本会更改另一个数据验证中的文本
- google-apps-script - 缺少范围 Google Analytics API
- vba - Excel VBA 文本到列
- auth0 - 带有 AuthenticationClient 的 Auth0 登录对话框
- python - 引发“不可编辑”异常
- android - 默认通知文本大小