C语言程序设计第七章 用函数实现模块化程序设计

一、为什么要用函数

1、函数定义

函数就是功能;每一个函数用来实现一个特定功能;函数的名字反应其代表的功能。

2、程序中函数调用

#include<stdio.h> //预处理指令,头文件

Int main() //主函数

{

void
printf_star(); //声明函数

  Void printf_message();                 //声明函数

  Printf_star();                               //调用函数

Printf_message(); //调用函数

Printf_star(); //调用函数

Return 0; //函数返回值0返回到函数

}

Void printf_star() //定义函数 viod类型为无类型函数,执行这个函数后,不会把任何返回值带回主函数

{

   Pintf(“****************\n”); //

}

Void printf_message() //定义函数

{

   Printf(“How

do you do !\n”); //

}

运行结果:


How do you do !


3、函数声明的作用:

把有关函数的信息通知编译系统,以便在编译系统对程序进行编译时,在进行到main函数调用printf_star()和printf_message()时,知道他们是函数,而不是变量或其他对象,此外还对调用函数的正确性进行检查。

4、程序编写函数的注意事项

程序编写一般由若干个源文件组成一个C程序(目的:分别编写和编译,提高调试效率)

一个源文件由一个或多个函数及其内容(如:指令、数据声明、定义等)组成

程序的执行从main函数开始,如果main函数中调用其他函数,在调用后流程返回到main函数,在main函数中结束整个程序的运行

所有函数都是平行的,即在定义函数时是分别进行,相互独立

函数不能嵌套定义,函数间可以相互调用,但不能调用main函数

5、函数的分类

a.从用户角度看:

      a.1 库函数:由系统提供,用户不必自己定义,可直接使用他们

      a.2 用户自己定义的函数:用来解决用户专门需要的函数

b.从函数形式看

     b.1 无参函数:在调用无参函数时,主调函数不向被调函数传递数据;无参函数一般用来执行指定的一组操作;无参函数可以带回或不带回函数值,但一般以不带回函数值的居多

       b.2 有参函数:在调用函数时,主调函数在调用被调函数时,通过参数向被调函数传递数据。一般情况下,执行被调函数时会得到一个函数值,供主调函数使用。

二、怎样定义函数

在程序中遇到的所有函数必须先定义后使用。

1、 定义函数应包括以下几个内容

a.      指定函数名字,以便以后按名调用。

b.      指定函数类型,即函数返回值类型

c.      指定函数的参数名字和类型,以便在调用函数时向他们传递数据。对于无参函数u需要这项

d.      指定函数应当完成什么操作,也就是函数是做什么的,即函数的功能

2、 定义函数的方法

a.
定义无参函数

类型名 函数名(void)

{ 函数体(包括声明部分和语句)

}

b.
定义有参函数

类型名 函数名(形式参数列表 )

{ 函数体(包括声明部分和语句)

}

c.
定义空函数

类型名 函数名()

{ }

三、调用函数

1、调用函数的形式

函数名(实参列表);//实参列表可以没有,但括号不能省

2、调用方式

a.函数调用语句

   把函数调用单独作为一个语句。

   例:printf_star();//这时不要求函数带返回值,只要求函数完成一定的操作

b.函数表达

   函数调用出现在另一个表达式中

   例:m=max(a,b);//这时要求函数带一个确定的返回值,以参加表达式的运算

c.函数参数

   函数调用作为另一个函数调用的实参。

   例:m=max(a,max(b,c));

3、 形式参数和实际参数

形式参数:在定义函数时,函数名后面括号内的变量为形式参数。

实际参数:在主调函数中调用一个函数时,函数名后面括号中的参数称为实际参数。

例:输入两个整数,求输出其中的较大值

解:先编写max函数【有参函数,必须有返回值】

Int max(int x,int y )

{

    Int  z;//定义一个整数z

    Z=x>y?x:y;//比较大小

    Return(z[Z9] );//函数返回值z传递到main函数调用处

}

再编main函数

#include<stdio.h>

Int main()

{

    Int  max(int x,int  y);//函数声明

    Int  a,b,c;//定义整数a,b,c

    Scanf(“%d %d”,&a,&b);//输入a,b

    C=max(a,b[Z11] );//调用max函数

    Printf(“%d\n”,c);

    Return 0;//返回函数值0

}

注意:被调函数放在主函数之前,在主函数调用时可以不用加声明;被调函数放在主函数之后,在主函数调用时必须加声明

四、函数的嵌套调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟的进化之旅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值