[問題] 請教一個程式問題
int *f(int x)
{
int y;
y=x+10;
return &y;
}
int g(int y)
{
int x;
x=y-10;
return x;
}
void main()
{
int *x,y;
x=f(10);
y=g(*x);
printf("%d %d\n",*x,y);
}
請問一下為什麼最後的output是10,10
試過在第一個在第一個function中加入printf
以及在main function中的x=f(10);後也加入printf
最後答案都不一樣
也試過在第一個function中y = x + 10;改成y = 3;
答案也莫名其妙
我想這跟function中stack有關吧
只是想不透為什麼最後的output是如此
請高手能替我解答嗎
謝謝囉
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.169.78.226
推
06/17 21:53, , 1F
06/17 21:53, 1F
→
06/17 21:54, , 2F
06/17 21:54, 2F
→
06/17 21:55, , 3F
06/17 21:55, 3F
推
06/17 21:57, , 4F
06/17 21:57, 4F
→
06/17 21:57, , 5F
06/17 21:57, 5F
→
06/17 21:57, , 6F
06/17 21:57, 6F
→
06/17 21:58, , 7F
06/17 21:58, 7F
推
06/17 22:05, , 8F
06/17 22:05, 8F
→
06/17 22:06, , 9F
06/17 22:06, 9F
→
06/17 22:07, , 10F
06/17 22:07, 10F
推
06/17 22:17, , 11F
06/17 22:17, 11F
→
06/17 22:17, , 12F
06/17 22:17, 12F
→
06/17 22:18, , 13F
06/17 22:18, 13F
→
06/17 23:22, , 14F
06/17 23:22, 14F