分享

C函数调用

 quasiceo 2015-01-14
分类: 6.C语言-结构式编程 2009-06-26 13:53 5621人阅读 评论(8) 收藏 举报

/*
file function_param.c
author:chinanetboy
function:input /output with param
date:06/22/2009
blog:http://blog.csdn.net/chinayaosir
tool:vc++6.0
*/

实际上要模仿的是函数参数的4种调用方式f(in,out),f(in,in),f(out,in),f(out,out)
   f_call_in_out(&a,&b);
参数调用的第1种模式f(IN,OUT)
说明:a设成输入参数,函数处理后输出结果放在参数b,返回值通过参数b实现
    f_call_in_in (&a,&b);
参数调用的第2种模式f(IN,IN)
说明:a是输入参数,b也是输入参数,函数没有返回值
    f_call_out_in(&a,&b);
参数调用的第3种模式f(OUT,IN)
说明:a是函数返回值,b是输入参数,返回值通过参数a实现
    f_call_out_out(&a,&b);
参数调用的第4种模式f(OUT,OUT)
说明:函数没有输入参数,a是函数返回值,b也是返回值,返回多个参数


#include "stdio.h"
typedef struct dateday
{
    int yy,mm, dd;
}date;
void day_begin();
void day_init(date* a,date* b);
void f_call_in_out(date* in,date* out);
void f_call_in_in(date* in1,date* in2);
void f_call_out_in(date* out,date* in);
void f_call_out_out(date* out1,date* out2);

int main()
{
    date a,b;
    day_begin();
    day_init(&a,&b);//init a,b
    f_call_in_out(&a,&b);//IN/OUT WITH CALL PARAM

    day_init(&a,&b);//init a,b
    f_call_in_in(&a,&b);//IN/IN WITH CALL PARAM

    day_init(&a,&b);//init a,b
    f_call_out_in(&a,&b);//OUT/IN WITH CALL PARAM

    day_init(&a,&b);//init a,b
    f_call_out_in(&a,&b);//OUT/OUT WITH CALL PARAM

    return 0;
}
void day_begin()
{
    printf("day struct (int mm,dd,yyyy)/n");
    printf("testting call function param with(in/in,in/out,out/in,out/out)/n");
}


void day_init(date* a,date* b)
{
    (a->yy)=2009,(a->mm)=2,(a->dd)=22;
    (b->yy)=2000,(b->mm)=1,(b->dd)=11;
    printf("day_init() day a,b /n");
    printf("a=%d/%d/%d/t",(a->mm),(a->dd),(a->yy));
    printf("b=%d/%d/%d/n",(b->mm),(b->dd),(b->yy));
}

void f_call_in_out(date* in,date* out){
    printf("f_call_in_out()param in,out....../n");
    out->yy=++(in->yy);
    out->mm=++(in->mm);
    out->dd=++(in->dd);
    printf("in=%d/%d/%d/t",(in->mm),(in->dd),(in->yy));
    printf("out=%d/%d/%d/n",(out->mm),(out->dd),(out->yy));

}

void f_call_in_in(date* in1,date* in2)
{
    printf("f_call_in_in() param in,in....../n");
    ++(in1->yy),++(in1->mm),++(in1->dd);
    ++(in2->yy),++(in2->mm),++(in2->dd);

    printf("in1=%d/%d/%d/t",(in1->mm),(in1->dd),(in1->yy));
    printf("in2=%d/%d/%d/n",(in2->mm),(in2->dd),(in2->yy));

}
void f_call_out_in(date* out,date* in)
{
    printf("f_call_out_in() param out,in....../n");
    out->yy=++(in->yy);
    out->mm=++(in->mm);
    out->dd=++(in->dd);
    printf("out=%d/%d/%d/t",(out->mm),(out->dd),(out->yy));
    printf("in=%d/%d/%d/n",(in->mm),(in->dd),(in->yy));
    
}
void f_call_out_out(date* out1,date* out2)
{
    printf("f_call_out_out() param out,out....../n");
    ++(out1->yy),++(out1->mm),++(out1->dd);
    ++(out2->yy),++(out2->mm),++(out2->dd);

    printf("out1=%d/%d/%d/t",(out1->mm),(out1->dd),(out1->yy));
    printf("out2=%d/%d/%d/n",(out2->mm),(out2->dd),(out2->yy));

}
/*
code run value,see blow
day struct (int mm,dd,yyyy)
testting call function param with(in/in,in/out,out/in,out/out)
day_init() day a,b
a=2/22/2009     b=1/11/2000
f_call_in_out()param in,out......
in=3/23/2010    out=3/23/2010
day_init() day a,b
a=2/22/2009     b=1/11/2000
f_call_in_in() param in,in......
in1=3/23/2010   in2=2/12/2001
day_init() day a,b
a=2/22/2009     b=1/11/2000
f_call_out_in() param out,in......
out=2/12/2001   in=2/12/2001
day_init() day a,b
a=2/22/2009     b=1/11/2000
f_call_out_in() param out,in......
out=2/12/2001   in=2/12/2001
Press any key to continue
*/

主题推荐
typedef blog vc++ struct 2010
猜你在找
关于C语言中函数调用和参数传递机制的探讨zz
多线程error C3867 函数调用缺少参数列表问题解决办法
再谈C语言有参函数调用时参数值传递问题
error C3867 _com_errorErrorMessage 函数调用缺少参数列表 错误的解决
C语言支持命名参数的函数调用
C技巧VC函数调用的汇编代码
关于C语言中函数调用和参数传递机制的探讨
小记备忘之CC++函数调用约定函数参数压栈顺序20131209
C语言函数调用时参数压栈的顺序以及函数指针的作用
C++支持缺省参数值并非仅仅为了函数调用灵活
查看评论
7楼 snowrab0281 2012-10-23 16:53发表 [回复]
如果不改动,能在VS2010里用吗?或者需要怎么改动一下,才能在2010里用呢?
6楼 fish_yu8 2009-06-29 11:47发表 [回复]
这四个函数实际上就是一个函数。调用后,两个参数都可以再访问
5楼 wp4398151 2009-06-29 09:58发表 [回复]
。。。就是用了指针的特性么。。。。。
4楼 姚军权 2009-06-29 09:03发表 [回复]
实际上要模仿的是函数参数的4种调用方式f(in,out),f(in,in),f(out,in),f(out,out)
f_call_in_out(&a,&b);
参数调用的第1种模式f(IN,OUT)
说明:a设成输入参数,函数处理后输出结果放在参数b,返回值通过参数b实现
f_call_in_in (&a,&b);
参数调用的第2种模式f(IN,IN)
说明:a是输入参数,b也是输入参数,函数没有返回值
f_call_out_in(&a,&b);
参数调用的第3种模式f(OUT,IN)
说明:a是函数返回值,b是输入参数,返回值通过参数a实现
f_call_out_out(&a,&b);
参数调用的第4种模式f(OUT,OUT)
说明:函数没有输入参数,a是函数返回值,b也是返回值,返回多个参数

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多