1.函数:自变量:参数 因变量:返回值 PS:形参与实参的区别
点击打开链接
2.但函数发生调用时,系统会为该函数分配一块内存空间,成为一个帧。掉帧就是函数调用速度太慢?
3.函数内部的变量称为局部变量,因为它的帧在函数结束时会被回收,因此其他变量不能使用它。
函数定义外的函数称为全局变量,当两者同时存在时(同名),全局变量会被屏蔽。全局变量可以被函数修改。
4.自动变量:默认的,会自动分配和回收空间
静态的全局变量:可使变量为当前源文件私有
静态的局部变量:在函数结束时,改变量不会消亡,被修改的值会被保存到这个空间里
外部变量:(extern int)可使多源文件共用这个变量
5.数组作为参数传递的是数组起始地址,形参和实参其实是同一个数组,对形参的修改会使实参也变了
6.内联函数(inline):有函数的外表,但没有调用的开销
#include<iostream> using namespace std; inline int square(int x) {return x*x;} inline int cube(int x) {return x*x*x;} int main() { int x; while(cin>>x) { cout<<square(x)<<endl<<cube(x); } return 0; }7.重载函数:两个及以上函数共用一个函数名
int max(int a1); int max(int a1,int a2); int max(int a1,int a2,int a3);
8.模板函数:将数据类型用模板类表示
#include<iostream> using namespace std; template<class T> T Max(T a,T b) { return (a>b?a:b); } int main() { cout<<Max(2,5)<<endl; cout<<Max(2.3,7.2)<<endl; cout<<Max('k','g'); return 0; }
#include<iostream> using namespace std; template<class T1,class T2,class T3> T1 Max(T2 a,T3 b) { return (a>b?a:b); } int main() { cout<<Max<double,int,int>(2,5)<<endl; cout<<Max<int,double,double>(2.3,7.2)<<endl; cout<<Max<char,char,char>('k','g'); return 0; }
9.递归函数:调用自身的函数
if(递归终止的条件) return(不需要用递归计算的简单解决方案); else return(包括调用同一函数的递归解决方案);
#include<iostream> using namespace std; int f(int n) { if(n==0) return 0; else if(n==1) return 1; else return f(n-1)+f(n-2); } int main() { int i; for(i=0;i<10;i++) { cout<<f(i)<<endl; } }10.基于递归的算法:枚举法,贪婪法,回溯法,分治法,动态规划