C语言学习之函数
函数的声明声明当被调函数定义在主调函数的后边编译器”implicit declration”可以将该函数在主调函数前边进行声明多文件使用函数时需要对其进行声明允许被其它文件调用语法返回值 函数名形参表函数的调用过程函数在调用的时候存在保护现场和恢复现场的操作保护现场当函数要被调用的时候会将函数调用位置的下一条指令地址保存在栈空间恢复现场当被调函数执行完时通过出栈保护现场的地址决定cpu继续执行的位置在函数被调用的下一条指令位置函数的传参1. 函数传参过程其实是实参向形参拷贝的过程实参有实参的空间形参有形参的空间值传递。2. 值传递在被调函数中无法修改主调函数中的变量。3. 函数传参的顺序自右向左。函数的递归调用递归调用函数直接或间接的调用自己本质是一种循环方式注意1. 递归要有递归的出口否则会成为死循环。2. 递归调用系统开销比循环大比如栈内存。函数一维整型数组传参方式定义返回值 函数名数组类型 数组名[]int len{//外面数组怎么使用函数内数组就怎么使用}调用函数名数组名数组长度注意数组作为函数参数传递时形参必须要是数组类型int a[][]中的常量可有可无2.数组作为函数参数传递时本质传递的数组首元素地址所以形参本质是一个地址是数组的起始地址由于数组名传参本质传递的是首地址所以把必须要传递整形数组的长度数组作为函数参数传递给被调函数后函数内部的使用方法和外面一样除了sizeof数组名