使用指针时输出不正确

时间:2013-04-19 16:02:15

标签: c++ c pointers

我收到了一些错误。我出错的任何线索?我想我正在应用正确的逻辑。

int* adderFunction(int a, int b)
{
    int result;
    int *pResult;
    pResult = &result;
    result = a + b;
    return (pResult);
}

5 个答案:

答案 0 :(得分:9)

没有。您正在尝试返回本地变量上的指针,该变量在从函数返回后被破坏。

答案 1 :(得分:1)

您正在返回指向局部变量result的指针。当你从函数返回时,它不再存在,但是你正在返回指向它的指针,。

答案 2 :(得分:1)

您正在堆栈上创建一个指针,并尝试返回在您执行完代码后删除的指针。如果您想在上创建内容,则需要使用new关键字。

但是你的问题可以解决得更简单:

int adderFunction(int a, int b) {
    return a + b;
}

答案 3 :(得分:0)

在函数结束后返回超出范围的指针。这是未定义的行为

答案 4 :(得分:0)

pResults指向堆栈变量。如果您希望在堆上分配数据,则应使用new。但你最记得以后解除分配。我更喜欢

int adderFunction(int a, int b)
{
    return a+b;
}

如果你想保留指针符号

,你也可以这样做
void adderFunction(int a, int b,int* pResult)
{
    *pResult=a+b;
}