-3

次のコードの問題点は何ですか

#include<stdio.h>

int main()
{
    int *a=pointer_return();

}

int* pointer_return()
{
     int a=10;
    return &a;
}

それは私にエラーを与える

demo.c: In function ‘main’:
demo.c:5:9: warning: initialization makes pointer from integer without a cast [enabled by default]
demo.c: At top level:
demo.c:9:6: error: conflicting types for ‘pointer_return’
demo.c:5:9: note: previous implicit declaration of ‘pointer_return’ was here
4

4 に答える 4

0

問題は、ローカル変数のアドレスを返すことです。関数が範囲外になるとすぐに、変数は範囲外になり、そのアドレスは無意味になります。したがって、ポインターは無効なアドレスを保持します。

于 2013-09-18T13:54:29.303 に答える
0

ポインターを返す変数はスタック上にあります。つまり、関数が返されると、それを参照することは無効/違法になります。

于 2013-09-18T13:53:40.697 に答える