| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 375 人关注过本帖
标题:大哥大姐 帮我看看
只看楼主 加入收藏
xuchuanjie
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2010-11-21
结帖率:25%
收藏
已结贴  问题点数:20 回复次数:4 
大哥大姐 帮我看看
int jf(n)
int n;
{
    static int f=1;
    f=f*n;
    }
main()
{
    int i;
    for(i=1;i<=6;i++)
    printf("%d!=%d\n",i,jf(i));}
int jf(n) 是怎样被调用的
搜索更多相关主题的帖子: 大姐 
2010-11-24 11:13
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
收藏
得分:10 
程序代码:
    push    si    ;si用于存储i,压入作为jf的实参
    push    cs    ;由于jf被定义成far类型,所以压入个cs作为返回地址
    call    near ptr _jf    ;调用jf
    pop    cx        ;弹出压入的si(i),堆栈平衡
    push    ax        ;将调用jf得到的值作为参数压入,供printf调用
    push    si        ;i
    mov    ax,offset DGROUP:s@    ;"%d!=%d\n"的地址,也就是指向"%d!=%d\n"的指针
    push    ax    ;压入
    call    far ptr _printf    ;调用printf
环境tc:
选择编译条件,令其生成汇编文件
看一下主函数中的循环(也就是printf(.....);)在上面
jf就是这么调用的,其实它每次都运行了,但只需要它的一个返回值就行了
2010-11-24 12:36
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
收藏
得分:5 
为什么要用这样的格式编写函数呢?这难道是新的C编码规范?

第一次调用 jf,初始化f为1,n为1,f = 1,返回值为1.打印1!=1;
第二次调用 jf,n为2,f = 2,返回值为2.返回值为2.打印2!=2;
第三次调用 jf,n为3,f = 6,返回值为6,打印3!=6;
......
2010-11-24 12:54
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
收藏
得分:2 
这应该是k&r风格吧!怀恋一下
2010-11-24 13:04
xufan123
Rank: 5Rank: 5
等 级:职业侠客
帖 子:226
专家分:318
注 册:2010-11-15
收藏
得分:3 
哎 是你啊 是说这个题目怎么这么熟
2010-11-24 13:51
快速回复:大哥大姐 帮我看看
数据加载中...
 
   



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

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