我有一个将2d数组作为参数传递给另一个函数的函数。 2d数组作为int **传递。
呼叫者功能:
bool isMatch(string s, string p)
{
int **dp;
int* a[s.size()];
dp = a;
for(int i=0;i<s.size();i++)
{
int b[p.size()];
dp[i] = b;
}
for(int i=0;i<s.size();i++)
{
for(int j=0;j<p.size();j++)
{
dp[i][j] = -1;
}
}
cout<<dp[0][0]<<endl;
return test(s,p,dp);
}
Calle Function:
bool test(string s,string p,int **dp)
{
cout<<dp[0][0]<<endl;
return true;
}
现在,当我在isMatch()函数-1中打印dp [0] [0]时,这是期望值。但是,当我将2d数组传递给另一个函数(即test())并打印dp [0] [0]时,我得到了950192880、337836240等随机值。尽管通过引用传递的所有内容和堆栈都是在退出调用者功能之前不清除?
array b
在for
循环中声明,因此在循环外无效。您说dp
的输出是预期的,但这是偶然的。您应该使用b
分配new
。