目录
2.1基础的构建函数,
不难
2.2函数调用
主要是讲传值和传址
int a=b,b的值给a
int&a=b a是b的化身,两者的地址相同
int *a=b,b的地址给了a,a是b的地址,*a才是b的值,如果直接&b是b的地址
2.3提供默认参数值
函数参数值
2.4局部静态对象
函数结束后不释放
2.5声明一个inline函数
inline函数的作用很简单针对于对于那些直接复制代码比调用更简单的情况
构建也只需要在函数类型前加上inline 如
inline int max(int a,int b)
{
return (a > b ? a : b);
}
2.6重载函数
简单来说就是同名函数有不同的功能
如inline int max(int a,int b)
{
return (a > b ? a : b);
}
inline float max(float a, float b)
{
return(a > b ? a : b);
}
inline string max(string a, string b)
{
return(a > b ? a : b);
}
调用时会自动根据参数列表来选择对应的函数,同名函数但是返回值和参数列表不同
如max(x,y)x,y可以是上述三种类型的任意一种
跟重载运算符<<差不多,<<可以输出各种形式的数据
2.7template模板
目的是简化代码看例子
可以把2.6中的代码简化成
template <typename T> //固定模板,可以编译器可以根据提供的参数来确定T
inline T max(T a, T b)
{
return (a > b ? a : b);
}
一次定义接下来无论你是用int类型还是float或者string类型都只要直接套模板
比如cout<<max(x,y)(这里就可以通过你定义的x,y的类型编译器自动选择对应的模板如int x,float x,string x等等)
2.8函数指针
简单的来说就是一个指向函数入口的指针
作用就是可以当作参数传入函数,以代替函数名
如一个函数指针int (*p)(int a,int b) 黄色部分要用括号,以区分定义函数
例子
- process(x, y, min);
- process(x, y, add);
- voidprocess(inti, intj, int(*p)(inta, intb))
- {
- cout<<p(i, j)<<endl;
- }
- 这个例子中如果不用函数指针,那么就要写两个函数
- 有了就可以把函数直接改传进来的函数名
补充指针函数是表示函数的返回值类型是指针
如int* max(int a)
2.9头文件
头文件是什么 ,为什么要用头文件?
头文件里面有对函数的声明,不被调用的时候不用被编译,可以在多个文件中被使用,简单来说vs允许有多个源代码,如果有多个源代码需要使用同一个函数就需要不断声明,如果需要声明的函数过多,但是这样不仅麻烦而且难以记忆,于是我们可以把它们都放在头文件中,需要用到时用include一次性全部调用。
如#include "math.h", 在调用头文件是只是把这行代码简单的换成了头文件的内容
如何创建头文件?见我写的这篇文章(教程c++如何创建一个头文件)或下方链接
https://blog.youkuaiyun.com/m0_65018431/article/details/127370884?spm=1001.2014.3001.5502