ブレイクポイントで値を見ながらやっていたのですが
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 コメント