第六章——函数

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.基于递归的算法:枚举法,贪婪法,回溯法,分治法,动态规划

猜你喜欢

转载自blog.csdn.net/weixin_42183904/article/details/80315277