C语言-第六章函数

函数

定义:是一段满足一定形式且具有特定功能的代码
语法形式:
返回值类型 函数名(参数列表){
//函数体
}
函数的意义

	(1) 函数可以重复调用 函数的代码不需要重复实现
	(2) 提升开发效率
	(3) 有利于结构化编程  实现项目的基础
	(4) 对于别人提供的函数 不需要知道实现原理和过程 只需要知道调用即可

自定义函数:
返回值类型 函数名(形参列表){
//函数体
}
返回值类型:
调用一个函数往往是求一个数据,这个数据一定有类型,那么这个数据的类型将被定义为函数的返回值类型
有些函数没有返回一个结果(数据),那么该函数将可以定义为void
函数名: 标识符 不能同名
形参列表: 用来接收调用函数时所给的数据
像定义变量一样
注意:

	  (1)一个形参一个类型,如果多个形参的类型即使一致,也不能省略类型
	  (2)形参之间用逗号隔开
	  (3)一个函数可以没有任何形参,也可以有任意多的形参
	  (4)当形参列表为空时,代表该函数可以接收任意多的参数
	  (5)当函数如果明确不接收任意参数时,可以指定为void

int x,y;
void fun(int x,int y) 不能写成 void fun(int x,y)//错误的
void:
(1) 函数没有返回值
(2) 声明函数形参 表示函数不能接收任何参数
函数体:
实现函数功能的代码
如果该函数的返回值类型不是void,则一般通过return来返回特定的结果
return:
return val; //表示把该结果返回给函数的调用者
如果函数声明为void,那么这个时候也可以用 return;
作用:
(1)返回一个结果
(2)结束一个函数
调用函数:
变量 = 函数名(实参列表);//调用函数
变量将会保存函数返回的结果
自定义函数的位置:
一般在main函数的上面的声明定义
C函数的隐式声明:
(1)C语言中的函数默认返回值类型为int
如果一个函数的返回值类型为int,则可以省略
int func(){}
func(){}
(2)C语言中调用函数,如果在编译时,前面并没有声明过该函数
则编译器会隐式声明一个函数
这个函数的返回值类型默认为int类型
如果当后面如果自己声明的函数返回值类型不是int时编译报警告
如果是让写一个函数求什么结果,这个结果并不需要在函数中printf(),把该结果返回即可
函数参数的传递过程:

(1)实参和形参可以同名 也可以不同名 但是对应位置的类型得一致
	一致并不代表完全一模一样   一致可以是隐式类型转换
	所以如果类型不一致,编译时将报错
(2)形参在函数调用时被初始化了,是用实参的值初始化
(3)实参和形参是不同的两个变量 它们只是在调用初始化值 一样而已
(4)C语言中函数传递的过程是值传递的过程 即复制
(5)对于普通数据类型 在函数中修改形参的值 并不会影响实参的值
   注意:对于数组而言,在函数中修改数组中的元素  会影响原来实参数组的值
   [注:以后讲指针时再解释]
(6)关于定义函数时不让函数修改形参的值
	形参类型前加 const  表示在该函数中不能对形参的值进行修改
	一般情况下  修改 数组 才有意义
		func(const int arr[],size_t len) 数组中的元素在该函数中不能被修改
	形参加const,防止在函数中意外地修改
	增加代码的健壮性 和 可读性
	const修饰的变量,表示 只读  不可以修改

递归函数

	(1) 退出条件
	(2) 满足一定递归规则 

函数调用:

	在内存中开辟一块内存区域用于保存函数的开支
	函数调用过程中这片内存不会回收
	函数调用之后会回收该内存
	函数调用需要耗时(这个时间很少)
	递归深度如果太深,会导致性能损耗过快
	内存消耗大,性能变低
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值