将 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;
}
为什么会这样错误:在"+"标记之前使用函数体外部的参数 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])
出于完全相同的原因。
在C++中,数组的大小不能动态更改。当然,您正在阅读尺寸,这会导致问题。您可以对 n,k 的值进行硬编码以进行测试
int dp[10][10];
int solve(int n, int k, int dp[10][10])
或尝试改用向量。
相关文章:
- 类中私有结构的构造函数出错
- 字符串验证函数出错
- 我的类默认构造函数出错
- Dev-C++和Code::Blocks中的析构函数出错
- int对的哈希函数出错
- MSVC 编译器错误导致迭代器和友元函数出错
- 复制构造函数出错
- 使用 WinSock2 开发,使用 CreateThread() 函数出错
- 链接列表的Push_back函数出错
- 结构初始化中的隐式复制构造函数出错
- 异步函数出错
- 编译器错误消息错误:令牌之前的预期')' '*'。我的构造函数出错
- c++中使用std::bind和std::函数出错
- 在vector排序中使用c++模板函数出错
- 使用std::for_each lambda函数出错
- 二叉搜索树插入函数出错
- 调用类的函数出错
- c++使用删除函数出错
- 使用已删除的函数出错
- 调用构造函数出错