Linux c的一个关于指针函数的问题,求大神看看。。。!

尧尧尧 发布于 2014/10/22 09:43
阅读 171
收藏 0
这个地方运行输出怎么不对呢?????
  1. #include <stdio.h>
  2. #include <string.h>
  3. static const char *msg[] = {"Sunday", "Monday", 
  4. "Tuesday", "Wednesday",
  5.                         "Thursday", "Friday", "Saturday"};
  6. char *get_a_day(int idx)
  7. {
  8.      static char buf[20];
  9.      strcpy(buf, msg[idx]);
  10.      return buf;
  11. }
  12. int main(void)
  13. {
  14.      printf("%s %s\n", get_a_day(0), get_a_day(1));
  15.      return 0;
  16. }
  17. liy@buildserver122:~/test$ gcc test.c -o test
  18. liy@buildserver122:~/test$ ./test 
  19. Sunday Sunday
复制代码
应该是 Sunday  Monday   才对啊
加载中
1
Micooz
Micooz

函数调用,stdcall先调用get_a_day(1),buf为Monday,后调用get_a_day(0),buf为Sunday,最后调用printf,取的是buf,自然都是Sunday


尧尧尧
尧尧尧
我明白了,,编译执行从右到左;而且是同一个地址,感谢大神,, 我是学java的,看来要忘掉java才能学好c
0
中山野鬼
中山野鬼
函数调用,还能批次利用同一数据空间的?哈。
0
cougar0709
cougar0709
分开写就可以了,不要一次调用。
0
calvary
calvary

都是同一空间的数据. 打印出来当然一样了.. 

  

0
尧尧尧
尧尧尧
[11][11][11]
返回顶部
顶部