w6 函数
什么时候需要函数:封装部分功能,便于反复使用
函数定义与使用:int(返回类型,不能是数组) is_Prime( int num(形参) ) {
...
return res(返回值);
}
在调用函数前,必须对其进行声明或定义
调用时需要匹配参数类型和参数数目
不匹配怎么办?编译器悄悄转换
已经遇到原型:根据原型要求转换类型
未遇到原型:默认实参提升(float转double,char/short转int)
本地变量
定义在块内,进入块前不存在,离开块后其中变量消失
函数调用和参数传递
参数在函数调用时,会以值传递方式进行初始化,将实参内存里的值,拷贝到形参所在的内存里,这是两块内存空间,在函数内部访问只在其对应内存上操作,不会影响main函数的内存
形参包含的是实参的副本,就是把实参的值赋给形参参加运算,传入的数大小不受运算影响
函数最后的return 0实际上给了操作系统,表达进程是否正常退出,0正1否
将数组作为参数传递
void BubbleSort(const(强调不得改变) int [ ], int len);
传递的是数组的首地址,内存中只有一份数组的拷贝,如果对数组进行任何赋值修改的操作,会改变原数组的值
函数返回值
return: 返回函数到被调用的地方
exit: 退出整个程序运行,main退出
利用栈实现函数调用与返回
main从上往下占用内存,当中调用的函数从下往上占用内存
即不同函数都在栈上,但是是完全独立的两块空间