前言:
“函数”这个名词,我们每个人都是耳濡目染。高中数学中的函数已经够让我们头疼了,而现在在C语言中又遇到了“函数”,但这个知识点是我们必须要掌握的,因为函数在C语言中扮演着至关重要的角色,函数不仅是组织和复用代码的有效手段,更是构建复杂程序的基石,下面就让我们一起来挑战挑战C语言中的函数吧。
在C语言中,函数也被称为“子程序”。函数就是一段完成特定任务的代码块,它可以**接收输入的数据(参数),并返回一个值**
。而C语言程序就是由一个个函数组成的。
C语言中常见的两类函数:
1. 库函数; 2. 自定义函数
C语言国际标准ANSI C规定了一些常用函数的标准,称为标准库。然后编译器厂商根据这些规定的C语言标准给出了一系列函数的实现,这些函数被称为库函数。库函数一定程度上提高了程序员的工作效率,因为它可以直接使用,不用人们去实现一些常见的功能,而浪费时间。 C语言中常用的库函数:
库函数是在标准库中对应的头文件中声明的,所以库函数的使用必须包含头文件 eg:
//#included <stdio.h>
//printf;
//scanf;
printf , scanf
是我们常用的库函数,#include<stdio.h> 是它们的头文件
库函数相关头文件:https://zh.cppreference.com/w/c/header
包括函数原型,功能介绍,参数,返回值,代码举例… 大家可以去了解看看。
库函数只是为了便捷我们的使用,更重要的是自定义函数
。语法如下:
ret_type fun_name(形式参数)
{
}
eg:加法函数,完成两数相加。函数名:Add,接受两个整形类型的参数,计算的结果也是整形
#include<stdio.h>
int Add(int i, int j)
{
return i + j;
}
int main()
{
int i = 0;
int j = 0;
scanf("%d %d", &i, &j);
int a = Add(i, j);//调用加法函数
printf("%d\n", a);
return 0;
}
函数的参数分为实参和形参
根据上面的举例:
这块的 i 和 j 为实际参数(实参就是真实传递给函数的参数)
这块的 i 和 j 为形式参数,(如果只是定义了Add函数而不去调用的话,Add函数的参数只是形式上存在,不会向内存申请空间,不真实存在,所以叫形式参数。它只有在函数被调用过程中为了存放实参时才会向内存申请空间,这个过程就是形参的实例化。调用的话就会发现,形参和实参的地址是不一样的,形参是实参的一份临时拷贝。
数组也可以做函数参数 eg:写一个函数,将一个数组中的内容全部变为6,再写一个函数将其打印出来
#include<stdio.h>
void set_arr(int arr[], int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
arr[i] = 6;
}
}
void printf_arr(int arr[], int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
}
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int sz = sizeof(arr) / sizeof(arr[0]);
set_arr(arr,sz);//设置数组内容为6
printf_arr(arr,sz);
return 0;
}
执行结果:
注:
嵌套调用就是函数之间的互相调用,下面用一个例子来表达一下吧 eg:计算某年某月有多少天
#include<stdio.h>
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, 3 };
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;
}
执行结果:输入2024年2月
链式访问就是将一个函数的返回值作为另一个函数的参数
int main()
{
printf("%d",printf("%d",printf("%d",68)));
return 0;
}
printf函数返回的是打印在屏幕上的个数,所以最终打印 6821
函数的定义就是函数的具体实现 还用上面的代码来举例吧 这个就是函数的定义:
int is_leap_year(int y)//判断闰年
{
if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
return 1;
else
return 0;
}
函数的声明:
int is_leap_year(int y)
函数的使用必须先声明后使用,其实函数的定义也是一种特殊的声明,所以函数定义放在调用之前也是可以的。
总结:
C语言函数这一章节,是我们想成为编程高手,必掌握的一步,我们通过定义和使用函数,可以构建出结构清晰,功能强大的C语言程序。好了,这一篇就讲到这里了,感觉有收获的话,别忘了留下你的关注和三连哦!