函数
概念:把一些大的或者功能相同的程序分成一个个程序块
函数是构成程序的基本单元
函数的使用可以省去重复代码的编写
函数可以使程序更加模块化,提高程序可读性
根据函数的定义方式可分为:
库函数 用户自定义函数 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.数组名作为实参传递
数组名就是数组的首地址
传递数组名时,会将数组的首地址进行传递
数组首地址:数组的第一个元素的地址
函数递归(有一个已知条件,终止条件)
在一个函数中,直接或间接调用函数本身