0

そのような関数はダングリング ポインターになりますか?

int *foo () {
    int a[2] = {2, 3};
    int *p = NULL;
    p = a;
    return p;
}
4

2 に答える 2

6

はい。自動保存期間を持つ配列へのポインタを返しています。関数が返すとき、ポインターは無効です。

于 2013-10-05T01:19:16.760 に答える
2

自動ローカル変数へのポインターを返さないでください。
あなたの場合、変数aは一度返されると存在しないfooため、変数へのポインターは無効になります(未定義の動作を呼び出します)。

于 2013-10-05T01:25:54.837 に答える