構造体のポインタについて

ブレイクポイントで値を見ながらやっていたのですが

18行目ではvar2にちゃんと数値が代入されるのに
21行目のprintf("%d %.1f\n",var2->i, var2->d);

で、var2->iとvar2->dにデタラメな数値が代入されるのです。
何故なのでしょうか?
(20行目のprintf文を消せばちゃんと代入されるのです…)

該当のソースコード

c

1#include <stdio.h>2 3struct s_type {4 int i;5 double d;6};7 8struct s_type s(void);9struct s_type *p_s(s_type s);10 11int main(void)12{13 struct s_type var = { 0 };14 struct s_type var1 = { 0 };15 s_type *var2 = NULL;16 17 var1 = s();18 var2 = p_s(var);19 20 printf("%d %.1f\n", var1.i, var1.d);21 printf("%d %.1f\n",var2->i, var2->d);22 23 return 0;24}25 26struct s_type s(void)27{28 struct s_type temp;29 30 temp.i = 100;31 temp.d = 123.23;32 33 return temp;34}35 36struct s_type *p_s(s_type s)37{38 s.i = 10;39 s.d = 20.0;40 41 return &s;42}

コメントを投稿

0 コメント