【C语言入门】函数

【C语言入门】函数

十、函数

1 函数、函数的分类与特点

1.1 什么是函数

将实现某一特定功能的代码封装成为一个整体,称为函数(function),并提供对外的接口,提高了代码的复用性

1.2 函数的分类

  • 库函数 – C语言提供的函数

  • 自定义函数 – 程序员自己编写的函数

1.3 函数的特点

  • 简化代码

  • 代码复用

2 函数的声明、定义与调用

2.1 函数声明

函数声明:告诉编译器有一个函数,它的函数名是什么、它有什么函数参数、它的返回值类型是什么。

int Add(int, int);

注意

1 这样的形式也称为函数原型,它是一种声明形式,用来告知编译器在程序中要使用该函数。函数原型也被称为函数声明

2 函数可以声明多次

3 函数在声明的时候可以省略形参名只保留形参的类型


2.2 函数定义

函数定义:创建函数的具体实现。(也就是函数的创建方法)

int Add(int x, int y)//函数头部
{
	return x + y;
    //函数体--大括号范围内的
}

注意

1 函数定义由多个部分构成,包括函数头部函数体

2 函数头部(function header):表示函数的名称和格式。包含:返回类型、函数名、形参声明

​   返回类型(return type):函数返回的值 —— 返回值(return value) 的类型。

​   函数名(function name):函数的名称。

​   形参声明(parameter type list):小括号括起来的部分,是用于接收辅助性提示的变量——形式参数(parameter) 的声明。多个形参之间使用逗号隔开。

3 函数体(function body)

​   所有的C函数都使用花括号标记函数体的开始和结束。(这是规定,不能省略)

​   函数体是复合语句。仅在某个函数中使用的变量,原则上应该在该函数中声明和使用。

​   要注意不能在函数体内声明与形参同名的变量,否则会发生变量名冲突的错误。


2.3 函数调用

函数调用就是在使用函数。(使用函数的过程,称为“函数调用”)

函数调用的形式:在函数名后面加上小括号。这个小括号称为函数调用运算符(function call operator)

Add(2, 3)//函数调用表达式

解释说明

1 函数调用表达式(function call expression):使用函数调用运算符的表达式称为函数调用表达式。

​   函数调用运算符括起来的是实参(argument)。当实参不止一个时,使用逗号将其分隔开。

2 函数调用解释流程:

​   1.进行函数调用后,程序的流程将一下子跳转到该函数定义处。主调函数的执行将暂时中断

​   2.在被调函数的一方,会生成用于形参的变量,并赋予其实参的值

​   3.形参的初始化完成后,将执行函数体。程序流在遇到 return 语句(return statement),或者执行到函数体最后的大括号 {} 时,就会从该函数跳转到调用函数的位置

​   4.也就是说,当return 语句执行结束后,程序流将返回到原来进行调用的地方再次执行被中断的主调函数。同时,return 后面的表达式的值会被返回。

​   5.返回值是通过对函数调用表达式进行判定而得到的会判定并获得返回值的类型和数值。

​   6.函数调用的时候传递的只是参数的值,因此调用函数时使用的实参既可以是变量,也可以是常量

​   7.实参和形参是完全不同的两个东西,因此不用担心实参和形参名字相同的问题。(实参和形参的名字可以相同

​   8.函数返回的是“表达式” 值不能返回两个及以上的值

3 注意事项

注意1:进行函数调用后,程序的流程会转到被调用的函数处。这时,传递过来的实参的值会被赋给函数接收的形参。

注意2:对函数调用表达式进行判定的时候,会得到该函数返回的返回值。

注意3形参只是实参的一份临时拷贝,形参的改变不会影响实参的值


3 示例

输入两个数,输出两数的和

3.1 普通写法

#include<stdio.h>

int main()
{
	//求两数之和
	int num1 = 0;
	int num2 = 0;
	int sum = 0;

	//输入
	printf("输入两个操作数:>\n");
	scanf("%d %d", &num1, &num2);
	//计算
	sum = num1 + num2;
	//输出
	printf("两数之和为:>\n%d\n", sum);

	return 0;
}

解释说明

1 scanf 函数是有返回值的,读取成功时返回的是读取到的数据的个数,读取失败时会返回EOF

​   EOFEnd Of File ,是文件结束标志。在VS2019中被这样定义:#define EOF -1


3.2 函数写法

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

//函数声明
int Add(int, int);//函数声明可以省略形参名
int Add(int x, int y);//函数可以声明多次

//函数定义
//int Add(int x, int y)
//{
//	int z = x + y;
//	return z;
//}
//简化写法
int Add(int x, int y)
{
	return x + y;
}

int main()
{
	//求两数之和
	int num1 = 0;
	int num2 = 0;
	int sum = 0;

	//输入
	printf("输入两个操作数:>\n");
	scanf("%d %d", &num1, &num2);
	//计算
	sum = Add(num1, num2);//在main函数中调用Add函数实现->求取两数之和
	//输出
	printf("两数之和为:>\n%d\n", sum);

	return 0;
}

解释说明

1 sum = Add(num1, num2);

​   其中 Add(num1, num2)函数调用num1num2 为传入 Add 函数的实参。

2 int Add(int x, int y) { return x + y; }

​   函数的定义(具体实现)。当调用 Add 函数后,形参会接收来自实参的值,也就是说形参和实参都有各自的存储空间,互不干扰


总结:

  本节介绍了什么是函数以及函数的分类和特点;讲解了什么是函数的声明、定义以及如何调用函数。


感谢您的阅读!如有任何错误,欢迎您的批评指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值