いくつかのエラーが発生しています。私が間違っている手がかりはありますか?私は正しい論理を適用していると思います。
int* adderFunction(int a, int b)
{
int result;
int *pResult;
pResult = &result;
result = a + b;
return (pResult);
}
いいえ。関数から戻った後に破棄されるローカル変数にポインターを返そうとしています。
stackにポインターを作成し、コードの実行が終了した後に削除されるポインターを返そうとしています。代わりにヒープ上に何かを作成したい場合は、new
キーワードを使用する必要があります。
ただし、問題はもっと簡単に解決できます。
int adderFunction(int a, int b) {
return a + b;
}
ローカル変数へのポインタを返していますresult
。関数から戻ると、それはもう存在しませんが、それへのポインターを返しています。