数组元素的值在调用方和被调用方中不同

问题描述 投票:0回答:1

我有一个将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等随机值。尽管通过引用传递的所有内容和堆栈都是在退出调用者功能之前不清除?

c++ arrays pointers multidimensional-array
1个回答
0
投票

array bfor循环中声明,因此在循环外无效。您说dp的输出是预期的,但这是偶然的。您应该使用b分配new

© www.soinside.com 2019 - 2024. All rights reserved.