欢迎来到天天文库
浏览记录
ID:14873497
大小:42.50 KB
页数:5页
时间:2018-07-30
《c语言函数入门-讲义(原创)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、4.1函数入门函数的作用。函数体现了C语言面向过程的模块化思想,具体作用是:1、使用函数使程序结构清晰;2、函数可复用,也可以反复调用;例1:两个程序的对比1)#includevoidmain(){printf("****************************************");printf("Helloworld!");printf("****************************************");}2)#include2、>voidf(){printf("****************************************");}voidg(){printf("Helloworld!");}voidmain(){f();g();f();}函数必须先定义或声明,才能调用。函数定义格式:返回值类型函数名(形参表)//函数头{//函数体声明部分语句}形参表可以是0个、1个或多个参数。注意形参表的格式:数据类型形参变量,……函数不返回值时,返回值类型是void。形参的本质是局部变量,形参只有在函数内部有效。当函数调用时3、,才为其申请内存空间,函数调用时便释放内存空间,main函数也不例外,所谓释放即返还给操作系统。一个程序有且只有一个main函数。4.2函数调用调用格式如下函数名(实参表)以上格式,是不带分号的,意味着,函数调用本质是表达式,既然函数调用是表达式,那么其使用方法同表达式。此时函数有没有返回值已无关紧要,若有返回值,则函数调用表达式便可放在赋值表达式的右边。例2:#includeintadd(inta,intb){intc;c=a+b;returnc;}voidmain(){inta,b,c;printf4、("inputtwonumbers:");scanf("%d%d",&a,&b);c=add(a,b);printf("%d+%d=%d",a,b,c);}形参是变量,但实参可以是类型匹配的任意表达式。实参与形参的个数、类型都要匹配。形参与实参同名与否无任何关系。例3:#includeintAdd(inta,intb){intc;c=a+b;returnc;}intJia(intbb){intc;c=100+bb;returnc;}voidmain(){inta,b,c1,c2;printf("5、inputtwonumbers:");scanf("%d%d",&a,&b);c1=Add(a,100.1);printf("%d+100=%d",a,c1);c2=Jia(b);printf("100+%d=%d",b,c2);}函数调用时,编译系统做了些什么事?1、执行流程,从主调函数的该函数调用语句转移到被调函数,即转去执行被调函数。2、参数传递,即实参按顺序传递给形参。而且是按值传递,即实参的值赋值给形参。3、形参得到实参的值后,便开始执行被调函数的函数体。4、被调函数执行完后,便返回到主调函数原来的6、地方,继续执行主调函数剩下的部分。若有返回值,返回即可。函数如何结束呢?1、若函数无返回值,便不必有return语句,此时,函数要执行到函数体最后一个语句,便可自然返回。2、若函数无返回值,也可以使用return语句结束执行,此时可以根据需要结合if语句来达到提前返回的目的。3、若函数有返回值,则必须使用return语句返回一个值并随即结束函数。小结:函数体无return语句,便是自然返回;反之,一旦执行到return语句便立刻返回,此时可结合if等语句,设置多个return语句以到达按指定要求返回的目的。例4:#inc7、ludevoidWork(){charc;printf("Starttowork:......");printf("Areyoutired?");scanf("%c",&c);if('Y'==c8、9、'y'==c){printf("Yougohomeandtakearest.");return;}printf("OK,proceedwithyourwork.");printf("Endofjob!");}voidmain(){Work();}按值传递意味着是单向传递,即形参在被调函数中10、发生改变不会影响实参的值。被调函数的声明和函数原型如果被调函数的定义在主调函数的后面,便要事先将被调函数声明。声明的格式如下:函数原型;函数原型是函数头的基础上省略具体的形参变量,而只有形参类型,也可以不省略,当不省略时,函数原型就是函数头。从格式中看到,声明中以分号结尾,意味着声明是一个语句。#include
2、>voidf(){printf("****************************************");}voidg(){printf("Helloworld!");}voidmain(){f();g();f();}函数必须先定义或声明,才能调用。函数定义格式:返回值类型函数名(形参表)//函数头{//函数体声明部分语句}形参表可以是0个、1个或多个参数。注意形参表的格式:数据类型形参变量,……函数不返回值时,返回值类型是void。形参的本质是局部变量,形参只有在函数内部有效。当函数调用时
3、,才为其申请内存空间,函数调用时便释放内存空间,main函数也不例外,所谓释放即返还给操作系统。一个程序有且只有一个main函数。4.2函数调用调用格式如下函数名(实参表)以上格式,是不带分号的,意味着,函数调用本质是表达式,既然函数调用是表达式,那么其使用方法同表达式。此时函数有没有返回值已无关紧要,若有返回值,则函数调用表达式便可放在赋值表达式的右边。例2:#includeintadd(inta,intb){intc;c=a+b;returnc;}voidmain(){inta,b,c;printf
4、("inputtwonumbers:");scanf("%d%d",&a,&b);c=add(a,b);printf("%d+%d=%d",a,b,c);}形参是变量,但实参可以是类型匹配的任意表达式。实参与形参的个数、类型都要匹配。形参与实参同名与否无任何关系。例3:#includeintAdd(inta,intb){intc;c=a+b;returnc;}intJia(intbb){intc;c=100+bb;returnc;}voidmain(){inta,b,c1,c2;printf("
5、inputtwonumbers:");scanf("%d%d",&a,&b);c1=Add(a,100.1);printf("%d+100=%d",a,c1);c2=Jia(b);printf("100+%d=%d",b,c2);}函数调用时,编译系统做了些什么事?1、执行流程,从主调函数的该函数调用语句转移到被调函数,即转去执行被调函数。2、参数传递,即实参按顺序传递给形参。而且是按值传递,即实参的值赋值给形参。3、形参得到实参的值后,便开始执行被调函数的函数体。4、被调函数执行完后,便返回到主调函数原来的
6、地方,继续执行主调函数剩下的部分。若有返回值,返回即可。函数如何结束呢?1、若函数无返回值,便不必有return语句,此时,函数要执行到函数体最后一个语句,便可自然返回。2、若函数无返回值,也可以使用return语句结束执行,此时可以根据需要结合if语句来达到提前返回的目的。3、若函数有返回值,则必须使用return语句返回一个值并随即结束函数。小结:函数体无return语句,便是自然返回;反之,一旦执行到return语句便立刻返回,此时可结合if等语句,设置多个return语句以到达按指定要求返回的目的。例4:#inc
7、ludevoidWork(){charc;printf("Starttowork:......");printf("Areyoutired?");scanf("%c",&c);if('Y'==c
8、
9、'y'==c){printf("Yougohomeandtakearest.");return;}printf("OK,proceedwithyourwork.");printf("Endofjob!");}voidmain(){Work();}按值传递意味着是单向传递,即形参在被调函数中
10、发生改变不会影响实参的值。被调函数的声明和函数原型如果被调函数的定义在主调函数的后面,便要事先将被调函数声明。声明的格式如下:函数原型;函数原型是函数头的基础上省略具体的形参变量,而只有形参类型,也可以不省略,当不省略时,函数原型就是函数头。从格式中看到,声明中以分号结尾,意味着声明是一个语句。#include
此文档下载收益归作者所有