1

いくつかのエラーが発生しています。私が間違っている手がかりはありますか?私は正しい論理を適用していると思います。

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

5 に答える 5

9

いいえ。関数から戻った後に破棄されるローカル変数にポインターを返そうとしています。

于 2013-04-19T16:03:16.260 に答える
1

stackにポインターを作成し、コードの実行が終了した後に削除されるポインターを返そうとしています。代わりにヒープ上に何かを作成したい場合は、newキーワードを使用する必要があります。

ただし、問題はもっと簡単に解決できます。

int adderFunction(int a, int b) {
    return a + b;
}
于 2013-04-19T16:18:26.170 に答える
1

ローカル変数へのポインタを返していますresult。関数から戻ると、それはもう存在しませんが、それへのポインターを返しています。

于 2013-04-19T16:03:31.557 に答える