函数分类:
内置函数(STL和Boost C++)
自定义函数
函数三要素:
返回值类型、函数名、参数列表
参数和按值传递
按值传递:给函数传递变元(参数时),变元(参数)值不会直接传递给函数,而是先制作变元(参数)值的副本,在存储在栈尚,在使用这个副本可用于函数,而不是使用初始值。
void change(int num)
{
num++;
}
int main()
{
int num=10;
change(num);
cout<<num<<endl;
}
结果为10
使用一维数组作为函数的参数:
//函数定义
void input(int values[], int len)
{
if (len > 5)
{
cout << "数组长度只能是5以内!!!" << endl;
}
}
int main()
{
int values[5];
input(values, sizeof(values) / sizeof(int));
}
//函数定义
void input(int *values, int len)
{
if (len > 5)
{
cout << "数组长度只能是5以内!!!" << endl;
}
}
int main()
{
int values[5];
input(values, sizeof(values) / sizeof(int));
}
使用二维数组作为函数的参数:
void show(double(*arr)[5], int len)
{
for (int i = 0; i < len; i++)
{
for (int j = 0; j < 5; j++)
cout << *(*(arr + i) + j) << ",";
}
cout << endl;
}
int main()
{
double power[3][5];
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 5; j++)
power[i][j] = 1.1 + i + j;
}
show(power, 3);
}
函数指针:
函数的地址是存储其机器语言代码的内存开始地址
好处:可以在不同的时间使用不同的函数
函数指针的声明:
函数原型: double sum(double,double);
函数指针声明:double (*ptrSum)(double,double); 声明了一个指针ptrSum,指向一个函数;
double * ptrSum(double,double)声明了一个函数pteSum,返回double* 类型,而不是函数指针。
//使用函数指针实现加减乘除运算
/** 加法*/
double addition(double, double);
double addition(double num1, double num2)
{
return num1+num2;
}
/**打印计算结果*/
void print_result(double(*)(double, double), double, double);
void print_result(double(*ptrCalc)(double, double), double num1, double num2)
{
//调用函数,打印结果
double result = ptrCalc(num1, num2);
cout << "运算结果为:" << result << endl;
}
int main()
{
double num1=0.1, num2=0.2;
//声明函数指针
double(*ptrCalc)(double, double);
ptrCalc = addition;
print_result(ptrCalc, num1, num2);
return 0;
}
double (*ptrCalc[])(double,double); //函数指针数组
另外一种定义方法
//使用函数指针实现加减乘除运算
/** 加法*/
double addition(double, double);
double addition(double num1, double num2)
{
return num1+num2;
}
/**打印计算结果*/
void print_result(double(*)(double, double), double, double);
void print_result(double(*ptrCalc)(double, double), double num1, double num2)
{
//调用函数,打印结果
double result = ptrCalc(num1, num2);
cout << "运算结果为:" << result << endl;
}
int main()
{
double num1=0.1, num2=0.2;
//声明函数指针
//double(*ptrCalc)(double, double);
auto ptrCalc=addition;
//ptrCalc = addition;
print_result(ptrCalc, num1, num2);
return 0;
}