【C语言】基础(七)函数

函数

概念:把一些大的或者功能相同的程序分成一个个程序块
函数是构成程序的基本单元
函数的使用可以省去重复代码的编写
函数可以使程序更加模块化,提高程序可读性


根据函数的定义方式可分为:
库函数 用户自定义函数 C++纯自定义函数 java纯库函数,效率高,直接应用 OC两者之间,倾向JAVA

根据是否有参数可分为:
有参函数 无参函数

根据是否有返回值可分为:
有返回值函数 无返回值函数


不能在函数内部定义函数

允许嵌套调用

允许递归调用(调用自身)

函数声明和函数体称为定义

函数的定义
1.正常的函数定义(无返回值类型写着,默认为Int)
返回值类型说明 函数名 (参数1类型 参数1 ,参数2类型 参数二,……)
基本数据类型,空类型,表示没有(void)
int func1(int a)

return a + 1;

int func2(int a,int b);(声明要分号,定义不需要分号)(定义在后面时,提前声明)

2.无返回值有参数的函数定义
void 函数名(参数类别)


3.有返回值无参数
返回值类型说明 函数名()


返回值会强行转换

函数大写开头(规范)


实际参数 实参
形式参数 形参(要求为变量)

sum(int a,int b);定义函数时形参未分配内存;调用函数时分配内存

函数调用结束以后,形参变量的内存会被释放

return;结束后即释放,无返回不需要写

实参与形参占据不同的存储单元

实参的值单项传递给形参,形参不会改变实参的值

函数栈
每个函数栈相互独立,内部变量只能在函数内访问,不能跨栈访问



主调函数 被调函数
即使函数没有参数,括号也不能省略
func1();




return 0;是编译器跟操作系统的一个约定。表示函数正常结束

函数内部,return 可代替 break 直接挑出函数
return之后的语句永远不会执行



函数与数组

1.数组元素作为实参传递,普通变量
2.数组名作为实参传递
数组名就是数组的首地址
传递数组名时,会将数组的首地址进行传递


数组首地址:数组的第一个元素的地址




函数递归(有一个已知条件,终止条件)

在一个函数中,直接或间接调用函数本身

原文地址:https://www.cnblogs.com/yujiamin/p/7301343.html