函数可将代码模块化,便于阅读维护,方便分工(架构能力),减少重复。
返回类型 函数名称(参数,参数...)
{
函数的功能区
return 返回值
}
函数参数:指针参数
举例
#include <iostream>
int add(int* x, int* y)
{
(*x)*= 100;
(*y)*= 10;
return *x + *y;
}
void printresult(int x)
{
std::cout << x << std::endl;
}
int main()
{
int a=2, b = 1;
int c = add(&a, &b);
printresult(c);
}
结构体使用指针,提高效率
#include <iostream>
struct Role
{
int Hp;
int Mp;
};
int Exp(Role* rl)
{
return rl->Hp + rl->Mp;
}
int main()
{
Role rl{ 500,1200 };
int c = Exp(&rl);
std::cout << c;
}
常量指针,只能读,不能改
举例 上述程序中改为int Exp(const Role* rl)
数组参数
举例
#include <iostream>
void sort(int a[],unsigned count)
{
for(int i=1;i<count;i++)
for (int i = 1; i < count; i++)
{
if (a[i] > a[i - 1])
{
int tmp = a[i];
a[i] = a[i - 1];
a[i - 1] = tmp;
}
}
}
int main()
{
int a[4]{ 234,545,455,679 };
sort(a,4);
for (int i = 0; i < 4; i++)
{
std::cout << a[i] << char(10);
}
}
函数指针本身是个指针,即一个可以指向特定类型函数的指针
int(*pAdd)(int a, int b)
而指针函数是指一个可以返回指针的函数
int* xAdd(int a, int b)
函数重载
可以创建函数名相同的函数,仍可运行,尽可能创建功能类似的函数,C语言中不可以
通过函数的返回值不能区分
站在编译器的角度,考虑编译的时候会不会出错
函数模板
函数模板也是C++的内容
举例
template<typename type1>type1 ave(type1 a,type1 b)
{
return (a+b)/2;
}
静态变量
int Add(int a,int b)
{
static int count;
count++;
...
}
内联函数
inline int add(int a, int b)
{
return a+b;
}
int main()
{
int c=add(1,2);
}