我收到了一些错误。我出错的任何线索?我想我正在应用正确的逻辑。
int* adderFunction(int a, int b)
{
int result;
int *pResult;
pResult = &result;
result = a + b;
return (pResult);
}
答案 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;
}