目录
前言
虽然“函数”这个术语来自数学,但是C语言的函数不完全等同于数学函数。在C语言中,函数不一定要有参数,也不一定要计算数值(在某些编程语言中,“函数”需要返回一个值,而“过程”不返回值,C语言中没有这样的区别)。
函数是C程序的构建块。每个函数本质上是一个自带声明和语句的小程序。可以利用函数把程序划分小块,这样便于人们理解和修改程序。此外,函数可以复用:一个函数可能最初是某个程序的一部分,但可以将其用于其他程序。
1. 函数是什么?
- 一个大型程序中的某部分代码, 由一个或多个语句块组成。它负责完成某项特定任务,而且相较于其他代 码,具备相对的独立性。
- 一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏
2.函数结构:
返回类型 函数名(形式参数)
复合语句
这就是函数的基本框架,下面有几点需要注意
1.函数不能返回数组,但关于返回类型没有其他限制。
2.指定返回类型是void型,说明函数没有返回值。
3.如果省略返回类型,C89会假定函数返回值的类型为int类型,但在C99中这是不合法的。
4.形式参数使用时,需要在每个形式参数的前面说明其类型,参数之间用逗号分开,如果函数没有形式参数,那么在圆括号内应该出现void。特别注意,即使几个形式参数具有相同的数据类型,也必须分别说明每个形式参数的类型。
5.函数内声明的变量专属于此函数,其他函数不能对这些变量进行检查或修改。
3.函数调用
函数调用由函数名和跟随其后的实际参数列表组成,其中实际参数列表用圆括号括起来。
函数名(实参1,实参2)
注:当函数调用对象为非void函数时,该调用会产生一个值,该值可以存储在变量中,用于后续的显示,计算等。
对应类型的变量=函数名(实参1,实参2)
如不需要返回值也可将其丢弃,同时,为了清楚地表明函数返回值是被故意丢掉的,C语言允许在函数调用前加上(void)。
如:
(void) 函数名(实参1,实参2)
C语言在函数调用中分为两种,分别是:
1.传值调用:
- 函数的形参和实参分别占有不同的内存块,对形参的修改不会影响实参。
注:C语言中默认实际参数是值传递
示例:
#include<stdio.h>
void js(int x, int y)
{
x = 10;
y = 20;
}
int main()
{
int num1 = 0;
int num2 = 0;
js(num1, num2);
printf("%d\n", num1);
printf("%d\n", num2);
return 0;
}
程序运行后结果为:
2.传址调用:
- 传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。
- 这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数的内部可以直接操作函数外部的变量。
传址调用,就是在传值调用的基础上加入了内存地址的概念,通过将内存地址变为实参,传递给形参,之后利用传递给形参的内存地址进行改变函数外实参的值。
示例:
#include<stdio.h>
void js(int* x, int* y)
{
*x = 10;
*y = 20;
}
int main()
{
int num1 = 0;
int num2 = 0;
js(&num1, &num2);
printf("%d\n", num1);
printf("%d\n", num2);
return 0;
}
如图输出后为:
可以将两个代码相互结合着看,仔细研究两者的差异性。
4.函数的分类
C语言中函数主要分为两大类分别是:
1. 库函数
2. 自定义函数
1)库函数
在我们学习C语言以来,有很多功能我们会频繁地使用了很多次,这类功能,我们在开发的过程中每个程序员都可能用的到, 为了支持可移植性和提高程序的效率,所以C语言在基础库中提供了一系列类似的函数,方便程序员进行软件开发,而这类函数就是库函数。
那这类函数都具体有什么函数?
由于库函数数量太多无法一一列举,这里有个网站里面由详细的库函数介绍,大家在编程过程中也可以通过这个网站来查找自己想要的库函数
简单的总结,C语言常用的库函数都有:
- IO函数
- 字符串操作函数
- 字符操作函数
- 内存操作函数
- 时间/日期函数
- 数学函数
- 其他库函数
注:使用库函数必须包含#include对应的头文件。
2)自定义函数
首先虽然库函数有很多,但也无法完全做到我们想要的效果,所以这时候就出现了自定义函数,自定义函数和库函数一样,有函数名,返回值类型和函数参数。
用法:
写一个函数可以找出两个整数中的最大值。
#include<stdio.h>
int js(int x, int y)
{
return x > y ? x : y;
}
int main()
{
int num1 = 0;
int num2 = 0;
scanf("%d", &num1);
scanf("%d", &num2);
int max = js(num1, num2);
printf("%d", max);
return 0;
}
至此C语言初阶学习函数第一篇完结,如果有什么问题,欢迎大家在评论区,讨论、指正。
也希望此文对于你能够有所帮助,谢谢大家~
码字不易,还望支持~