誰かがなぜ次のコード6の出力は5ではないのですか?私はhooの呼び出しがm-> xの値をどのように変更したか理解していません。 コードを実行した後でも、各ステップを実行した後でさえ、依然として私には分かりません。構造体とポインタ。不明な出力
#include <stdio.h>
#include <stdlib.h>
typedef struct a {
int x;
struct a* next;
}a_t;
a_t* foo() {
a_t* varp, var = { 5,NULL };
varp = &var;
return varp;
}
a_t* hoo() {
a_t* varp, var = { 6,NULL };
varp = &var;
return varp;
}
void main()
{
a_t* m = foo();
hoo();
printf("%d", m->x);
}
コードは未定義の動作です。 – tilz0R
'var.x'は' foo'の外側では無効です。 – BLUEPIXY
関数からローカル変数を返すことができないためです。ポインタは、アクセスしようとすると割り当てが解除されたデータを指します。 SOには多くの重複があります。 –