使用指针时没有得到正确的输出

Not getting right output when using pointers

本文关键字:输出 指针      更新时间:2023-10-16

我得到一些错误。你知道我哪里出错了吗?我想我的逻辑是正确的。

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

No。

您正在尝试返回局部变量的指针,该指针在从函数返回后被销毁。

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

您正在堆栈上创建一个指针,并试图返回该指针,该指针在您完成执行代码后被删除。如果想在上创建一些东西,则需要使用new关键字。

然而,你的问题可以更简单地解决:

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

返回的指针在函数结束后超出了作用域。这是未定义行为

results指向堆栈变量。如果您希望将数据分配到堆上,则应该使用new。但你最应该记得的是稍后再释放它。我更喜欢

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

如果你想保留指针符号

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