C语言—函数

目录

一.函数的概念

二.函数的分类

1.库函数

2.自定义函数

三.函数的参数

1.实际参数

2.形式参数

3.二者关系

四.函数的嵌套调用与链式访问

1.嵌套调用

2.链式访问

五.函数的声明和定义


一.函数的概念

函数我们大家都学过,数学中我们常见到函数的概念,比如一次函数y=kx+b我们就称y是x的函数。

在C语言中我们也有函数,有时我们也将其称作子程序。可以看出,函数就是一个完成某项特定的任务的一小段代码。

二.函数的分类

1.库函数

C语言的国际标准ANSI C规定了一些常用的函数的标准,被称为标准库,不同的编译厂商根据C语言标准给出了一系列函数的实现,我们将这些函数称为库函数。

下面提供几个库函数学习的网站

C/C++官方链接:C 标准库头文件 - cppreference.com

cplusplus:cplusplus.com - The C++ Resources Network

2.自定义函数

库函数并不能包含所有的函数,更多时候我们需要自定义函数从而实现特定的功能。

函数的语法形式

ret_type fun_name(形式参数)
{

}

ret_type是函数的返回类型,用来表示函数计算结果的类型

fun_name是函数名,便于调用

例如:写一个函数实现加减乘除功能

int add(int x, int y)
{
	return x + y;
}
int sub(int x, int y)
{
	return x - y;
}
int mul(int x, int y)
{
	return x * y;
}
int div(int x, int y)
{
	return x / y;
}
int main()
{
	int ret1 = add(5, 3);
	int ret2 = sub(5, 3);
	int ret3 = mul(5, 3);
	int ret4 = div(5, 3);
	printf("%d %d %d %d", ret1,ret2,ret3,ret4);
	return 0;
}

三.函数的参数

1.实际参数

实际参数(实参)就是真实传递给函数的参数

2.形式参数

形式参数(形参)为函数括号内的x和y,只是形式上存在的,不会真实存在。形式参数调用完后便自动销毁,只在函数中有效。

3.二者关系

形参是实参的一份临时拷贝,他们是各自独立的内存空间。

四.函数的嵌套调用与链式访问

1.嵌套调用

嵌套调用,也可以视为函数之间的相互调用

例如我们现在要设计一个函数来判断某年某月有多少天

代码如下:

int is_leap_year(int y)//用于判断是否为闰年
{
	if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
		return 1;
	else
		return 0;
}

int get_days_of_month(int y,int m)//计算该月的天数
{
	int days[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
	//             0 1   2  3  4  5  6  7  8  9 10 11 12  让数组下标与月的天数对应上
	int day = days[m];
	if (is_leap_year(y) && m == 2)//如果是闰年,2月的天数需要在此基础上加1天
		day += 1;
	return day;
}
int main()
{
	int y = 0;
	int m = 0;
	scanf("%d %d", &y, &m);
	int d = get_days_of_month(y, m);
	printf("%d\n", d);
	return 0;
}

这里反应的函数调用如下:

main函数调用scanf,printf,get_days_of_month

get_days_of_month函数调用is_leap_year函数

需要注意的是,函数之间可以嵌套调用,但函数不能嵌套定义。

2.链式访问

链式访问就是将一个函数的返回值作为另外一个函数的参数。

int main()
{
	printf("%d\n", strlen("abcdefg"));
	return 0;
}

五.函数的声明和定义

函数在调用时,我们最好做到先声明后调用,否则编译器会因为没有找到声明的函数而出现警告。

如果是多个文件的话,我们一般把函数的声明、类型的声明放在头文件中,函数的实现放在源文件中。

言尽于此,本次对于函数的部分总结就到此结束了,本次是对函数的一个粗略总结,后续应该还会细细完善,谢谢大家观看,如有不足欢迎大家指出,你们的批评是我进步的动力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值