| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1391 人关注过本帖
标题:函数内 定义 static的问题
只看楼主 加入收藏
轮椅之星
Rank: 2
等 级:论坛游民
帖 子:18
专家分:42
注 册:2012-8-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
函数内 定义 static的问题
程序代码:
  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <string.h>
  4 static const char *msg[] = {"sunday", "monday", "tuesday", "wednesday",
  5                               "thursday", "friday", "saturday"};
  6 char *get_a_day(int index)
  7 {
  8       static char buf[20];
  9       strcpy(buf, msg[index]);

 10       return buf; 

 11 }     

 12 

 13 int main(int argc, const char *argv[])

 14 {

 15       printf("%s, %s\n", get_a_day(0), get_a_day(1));

 16       printf("%s, %s, %s\n", get_a_day(2), get_a_day(3), get_a_day(4));

 17       

 18       return 0;

 19 }  

程序运行结果是:sunday, sunday
                         :tuesday, tuesday, tuesday
求解释
搜索更多相关主题的帖子: include tuesday 
2012-12-18 12:29
zhaoya881010
Rank: 9Rank: 9Rank: 9
来 自:芒砀古郡
等 级:蜘蛛侠
威 望:1
帖 子:339
专家分:1177
注 册:2010-11-21
收藏
得分:7 
这个和static应该没有关系吧,你把printf打印分开写就可以了。

Go Go Go
2012-12-18 12:40
轮椅之星
Rank: 2
等 级:论坛游民
帖 子:18
专家分:42
注 册:2012-8-16
收藏
得分:0 
回复 2楼 zhaoya881010
我想知道为什么会出现这种结果, 设想的结果不是这样的。  为什么会产生覆盖??求解释
2012-12-18 15:06
zhaoya881010
Rank: 9Rank: 9Rank: 9
来 自:芒砀古郡
等 级:蜘蛛侠
威 望:1
帖 子:339
专家分:1177
注 册:2010-11-21
收藏
得分:0 
printf函数机制应该是先从右读取数据压入堆栈,然后栈出。

Go Go Go
2012-12-18 15:19
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:7 
以下是引用zhaoya881010在2012-12-18 15:19:48的发言:

printf函数机制应该是先从右读取数据压入堆栈,然后栈出。
简单的搜了一下

这个问题就很明了了
printf 确实是从右向左依次入栈  但是楼主例子中的三个函数的返回值确是全局变量  地址固定

所以在出栈时,就只剩下了最后的信息了

DO IT YOURSELF !
2012-12-18 15:28
_peak
Rank: 5Rank: 5
来 自:90后
等 级:禁止访问
帖 子:83
专家分:347
注 册:2012-12-12
收藏
得分:7 
printf

团结,进步,务实,创新!
2012-12-18 15:35
快速回复:函数内 定义 static的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.060316 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved