C语言基础(7)——函数(1)

函数的定义

C语言中,一个程序无论其大小,总是由一个或多个函数构成。每一个完整的C程序总是有且仅有一个main函数,它是程序的组织者,程序执行时也总是由main函数开始执行,由main函数直接或间接地调用其他函数来辅助完成整个程序的功能。

函数的分类

函数从用户使用角度可分为库函数和自定义函数。

库函数

目前为止,我们见过的printf(),scanf(),sqrt(),strcpy()函数都是ANSI C标准定义的库函数。
使用ANSI C的库函数,只要在程序的开头把该函数所在的头文件包含进来即可。比如,程序中要使用sqrt()函数,根据“ANSI C标准库函数表”得知该函数在math.h内定义,那么就在程序中加上:

#include<math.h>
自定义函数

用户自己定义函数,他们是用以解决用户专门需要的函数。


从函数的形式来看呢,函数也分两种:
(1)无参函数;在调用函数时,主调函数不向被调用函数传递数据。
(2)有参函数;在调用函数时,主调函数向被调用函数传递数据。一般情况下,执行被调用函数时会得到一个函数值,供主调函数使用。


函数的定义

有参函数定义

有参函数定义形式如下:

类型名 函数名(参数类型1	形参1,参数类型2	形参2,...)
{
	函数体
}

例如:

int max(int x,int y)
{
	int z;
	z=x>y?x:y;
	return(z);	//return(z)与return z 等价
}

该程序定义了一个max函数,它有两个整型形参x和y,返回值也为整型。return(z)的作用是指定将z的值作为函数值(称函数返回值)带回到主调函数。此程序并非一个可运行的程序,有main函数的程序才能运行。函数必须被main函数直接或间接调用才能发挥作用。

无参函数定义

无参函数定义形式如下:

类型名 函数名()
{
	函数体
}
或
类型名 函数名(void)	//void表示“空”,即无函数。
{
	函数体
}

空函数定义

空函数定义形式:

类型名 函数名()
{}

为什么会用到空函数?在编写程序的初始阶段,可以在将来准备扩充功能的地方写上一个空函数,只是这些函数还没有编写好,先用一个空函数占一个位置,等以后扩充功能时再用一个编好的函数代替它。


“函数名”是函数的唯一标识,它的命名规则与变量一样。习惯上的命名风格有两种:在Windows平台,普遍采用FunctionName这样的形式;在Linux/UNIX平台,习惯用function_name。


调用函数

定义函数的目的是调用函数,函数调用的一般形式如下:

函数名(实参1,实参2,...)

(1)如果“实参序列”包含多个实参,则各参数间用逗号隔开。如果是调用无参函数,则“实参序列”可以没有,但圆括号不能省略。即“函数名();”。
(2)定义函数时,圆括号内的参数称为形参。调用函数时,圆括号内的参数称为实参。实参与形参的个数应该相等,类型应一致。实参和形参按顺序对应,一一传递数据。


编写程序:
(1)先编写max函数

int max(int x,inty)		//定义max函数
{
	int z;			//定义临时变量z
	z=x>y?x:y;		//把x和y中的大者赋给z
	return(z);		//把z作为max函数的值带回main函数
}

(2)再编写主函数

#include<stdio.h>
int main()
{
	int max(int x,int y);		//对max函数的声明
	int a,b,c;				
	scanf("%d %d",&a,&b);
	c=max(a,b);		//调用max函数,有两个实参
	printf("%d",c);
	return 0;

程序分析:
先定义max函数(注意第一行的末尾没有分号)。第一行定义了一个函数,名为x,函数类型为int。指定两个形参x和y,形参的类型为int。
主函数中包含了一个函数调用max(a,b)。max后面的括号内的a和b是实参。x和y是在main函数中定义的变量。通过函数调用,在两个函数之间发生数据传递,实参a和b的值传递给形参x和y,在max函数里把x和y中最大值赋给变量z,z的值作为函数值返回给main函数,赋给变量c。


(1)实参a和b,形参x和y有各自的储存空间,函数参数传递是单向传递。函数调用时,实参值传递给形参,但形参值的改变不会影响实参。
(2)return语句用来指明返回值是什么。无论在函数什么位置,只要执行到它,立即返回到函数调用者位置。函数返回值只能有1个。
(3)函数的返回值类型可以是除数组外的任意类型,也可以是void类型,表示没有返回值。返回值为void类型的函数,也是遇到return就返回,但不要求有return语句。如果没有return语句,就一直运行到函数最后的最后一条语句,之后再返回。


函数的声明

函数声明有两种形式:
(1)返回值类型 函数名(参数类型1 参数名1,参数类型2 参数名2,…)
(2)返回值类型 函数名(参数类型1 ,参数类型2,…)
依然以上述max()函数为例,函数声明的格式为:

int max(int x,int y);

函数声明中形参名也可以默认,但参数类型必须写。例如:

int max(int,int);

(1)stdio.h和string.h等头文件的内容主要是各个库函数的声明。
(2)实际上,函数声明语句即可以在所有函数的外部,也可以在函数的内部。如果函数声明在所有函数外部,那么该函数声明语句之后出现的所有函数都可以调用被声明函数。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小Floyed

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

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

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

打赏作者

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

抵扣说明:

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

余额充值