C++基础(和函数有关1)1

来源:互联网 发布:yum update 卡住 编辑:程序博客网 时间:2024/06/08 14:23

函数的设计

默认参数

返回类型 函数名(类型  默认类型名=默认值){函数体}int add(int x=5 y=5){return  x+y;}1.要不在声明中设置,要不在函数定义时设置默认参数2.可以设置多个默认参数,但是设置顺序必须为自右向左,就是其右边的所有参数必须都已经设置了默认参数,默认参数可以是常量,全局变量,甚至是一个函数的调用(调用实参必须是常量或者全局变量的表达式),不可是局部变量3.默认参数的调用本质是编译器根据函数声明或者函数定义时的默认参数设置,对函数的调用中没有给出的实参自动用默认值表达式补齐,再进行编译

函数重载

1.在同一个域中,用同一个函数名来定义多个函数,但函数的形参列表不同(参数的类型或者个数不同)与函数的返回值没有关系2.函数重载的使用:3.重载函数的形参列表必须不同4.编译程序将根据形参和实参的类型和个数的最佳匹配来下载调用哪个函数5.一般不要将不同功能的函数进行重载,意义和功能会使程序误解。

函数模板

1.函数模板是一个独立与类型的函数,可以作为模式,产生函数的特定类型版本,类似JAVA的泛型2.使用泛型可以设计通用性的函数,这些函数与类型无关并且在需要时自动实例化,从而形成批量的编程方式函数模板的语法形式template<模板形参表>返回类型 函数名(形参列表){函数体}template <class T> T add(T a,T b){return a+b;}模板形参表第一种typename 类型参数1,typename 类型参数2,....第二种class 类型参数名1,class 类型参数名2,....第一种举例

这里写图片描述
第二种举例
这里写图片描述

指针与函数
1,指针作为函数的参数
指针作为参数使得被调函数可以返回多个运算结果 ,即指针是函数参数传递的重要工具。避免了使用全局变量。
函数形参可以是指针类型,形式如下:

返回值类型 函数名(指针类型 *指针变量名,指针类型2 *指针变量名2){    函数体}最典型的例子就是通过指针实现交换两个变量的值

这里写图片描述

2,数组作为函数的参数
一维数组或者多维数组作为函数的形参。

double average(double *a ,int n)
{
函数体
}
调用形式为
double a[100],f;
f=average(a,100);

在子函数中改变主调函数的数组元素,实参和形参对应关系有4中
(1)形参和实参都使用数组名,例如
void fun(int x[100],n);//函数原型
函数调用
int a[100];
fun(x,100);
(2)形参用指针,实参用数组名
函数的声明:void fun(int *x,int n)
函数的调用:
int x[100];
fun(x,100);
(3)形参实参都用指针变量,
函数的声明: void fun(int *p ,int n);
函数的调用:int a[100];
int *p=a;
fun(p,100);
(4)形参用数组名,实参用指针
函数的声明: void fun(int a[100],int n);
函数的调用:int a[100];
int *p=a
fun(p,100);
2.字符指针作为函数的参数
将字符串传递到函数,传递的是地址,则函数形参既可以用字符数组,又可以是指针变量,在子函数中修改字符串的内容,主调函数得到的是变化后的字符串.
这里写图片描述

指向函数的指针
c++规定函数入口地址为函数的指针
函数名代表函数,又是函数的指针(或地址)
1. c++允许定义指向函数的指针变量,定义形式为:
返回类型 (*函数指针变量名)(形参列表);
指向如下形式的函数:
返回类型 函数名(形参列表){
函数体
}
int (*p)(int a,int b);//定义函数指针变量
2.使函数指针指向函数
可以使函数的地址赋值给函数指针变量,形式为
函数指针变量=函数名;
要求函数指针变量与指向函数必须有相同的返回类型,参数个数,参数类型。函数指针变量可以指向所有与它有相同的返回类型,参数个数,参数类型的函数。
3.通过函数指针调用函数
对函数指针的间接引用即是通过函数指针调用函数,形式
函数指针(实参列表)
通过函数指针调用函数,在实参,参数传递,返回值方面与函数名调用相同,
c=P(a,b)等价于c=max(a,b);
4.函数指针的用途
指向函数的指针多用于指向不同的函数,从而可以利用指针变量调用不同的函数,相当于将函数调用由静态方式(固定的调用指定函数)变为动态(调用哪个函数由指针值来确定)
这里写图片描述

引用作为函数的返回值
函数的返回值可以是引用类型,即函数返回引用,函数形式如下

引用类型& 函数名(形参列表){函数体}

下边的是一个求两个书中较大值的三种方式,其实还有好多,这里就这三种,
max()普通变量
max2()使用引用
max3()使用指针,还有其他写法,

这里写图片描述

函数返回引用不是返回一个临时对象,而是相当于返回实体对象本身,函数返回引用可以作为左值

原创粉丝点击