目录
前言:
这篇文章会让我们初步了解认识什么是函数以及怎么使用函数
1. 什么是函数
C语言中的函数其实和数学中的函数还是有一定区别的,数学领域中,普通的函数一般式是y=kx+b,然后在C语言中,我在了解学习之后认为,函数就是在main函数中的一段特定的代码,用来反复完成一段指令任务或者将一大段很长的代码分割成一个个小模块来提高代码效率的。
2.函数分为两大类
1.库函数
不同的编译器⼚商给出了⼀系列 函数的实现。这些函数就被称为库函数。库函数包含了头文件,还有一个标准库,里面有众多库函数,只要学会,写在一个项目的前面#include<>,即可使用比如printf,scanf,strlen,sqrt等等,这些库函数根据功能的划分,都在不同的头⽂件中进 ⾏了声明。
库函数相关头⽂件:https://zh.cppreference.com/w/c/header(中文版)
库函数使用方法
这是我平时会用到的库函数使用方法的介绍,当我要用到某些库函数时,就会浏览
使用库函数的话,必须要写出对应的头文件,比如sqrt对应的头文件<math.h>
希望可以帮到大家。
2.自定义函数
函数的形式为 ret_type fun_name(形参,(可以有多个形参,也可以不要形参))
{
}
ret_type是返回类型,可以有int,void等等,fun——name则是函数名,注意一定要取的有意义,让别人一看就知道自己写的什么内容,既是可读性,也是美观性哦。你也不想你读其他程序猿的代码看不懂这函数名是什么意思吧,()内则是形式参数。
对于库函数来说,我其实觉得自定义函数更为重要,是程序猿码代码经常需要用到的。
#_CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int Add(int x, int y)
{
int z = 0;
z = x+y;
return z;
}
int main()
{
int a = 0;
int b = 0;
//输⼊
scanf("%d %d", &a, &b);
//调⽤加法函数,完成a和b的相加
int r = Add(a, b);
//输出
printf("%d\n", r);
return 0;
}
3.函数中的实参和形参,两者的关系?
在上⾯代码中,第3~8⾏是 Add 函数的定义,有了函数后,在int main里调⽤Add函数的。 我们把第18⾏调⽤Add函数时,传函数的参数a和b,称为实际参数。 实际参数就是真实传递给函数的参数。
实参是传递给形参的,他们之间是有联系的,但是形参和实参各⾃是独⽴的内存空 间。
形参是实参的⼀份临时拷⻉。他们的地址,x,y,a,b是不一样的,具体的可以调试查看监视器,这里就不展示了。
4.嵌套调用
嵌套调⽤就是函数之间的互相调⽤,在日常学习和工作中使用较为频繁,代码示范如下
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};
int day = days[m];
if (is_leap_year(y) && m == 2)
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;
}
函数之间可以嵌套调用,但是千万不能嵌套定义!
5.函数的定义和声明区别
简单来说,要是把如上函数int r = is_leap_year(y);第1~7行或者函数int get_days_of_month(int y, int m)8~16行的代码写在了int main的下面,那就需要在前面声明这两个函数,否则函数的定义也是属于特殊的声明。
6.总结
以上就是我学习函数的总结,函数自主学习的时间有点长,如果有错误,欢迎留言或者私信我改正,一起进步!