c++中函数怎么用

  介绍

这篇文章给大家分享的是有关c++中函数怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

<强>第六章函数

函数是一个命名了的代码块,通过调用函数执行相应的代码。

函数基础

<李>

通过<强>调用运算符(调用操作符)来执行函数。其形式是一对圆括号。

<李>

函数的调用完成两项工作(如下),此时<强>主调函数(调用函数)的执行被暂时中断,被调函数(称为函数)开始执行。

<李>

用实参初始化函数对应的形参。

<李>

将控制权转移给被调函数。

<李>

返回语句:

<李>

返回返回语句中的值

<李>

将控制权从被调函数移回主调函数

局部对象
<李>

名字有作用域,对象有<强>生命周期(一生)

<李>

<>强自动对象(自动对象):当函数的控制路径经过变量定义语句时创建该对象,当达到定义所在的块末尾时销毁它。

<李>

<强>局部静态对象:程序执行路径第一次经过对象定义语句时初始化,知道程序终止才被销毁。

<李>

将局部变量定义为<强>静态获得,例如:
<代码>
//统计函数count_calls()被调用了多少次
size_t count_calls ()
{
静态size_t ctr=0;,//调用结束后,这个值仍然有效
+ + ctr返回;
}
int主要()
{
(size_t我=0;我!=10;+ + i)
cout & lt; & lt;cout_calls () & lt; & lt;endl;
返回0;
}

函数声明
<李>

也称作<强>函数原型(函数原型)

<李>

函数三要素(<强>返回类型,函数名,形参类型)描述了函数的接口,函数声明中形参名可省略。

<李>

函数应在头文件中声明,源文件中定义。

<李>

分离式编译

参数传递

如果形参是引用类型,它将绑定到对应的实参上,否则,将实参的值拷贝后赋给形参。
-如果无需修改引用形参的值,最好将其声明为常量引用。

主要:处理命令行选项

假设主要函数位于可执行文件食物内,我们可以向程序传递下面的选项:

prog  -d  -o  ofile  data0

这些命令通过两个可选的形参传递给主函数:

int 主要(int 命令行参数个数,char  * argv []), {…}//或:   命令行参数个数,int 主要(int  char  * * argv), {…}

当实参传给主函数之后,argv的第一个元素指向程序的名字或者一个空字符串,接下来的元素一次传递命令行提供的实参,最后一个指针只会掉元素值保证为0。
-以上面的命令行为例:

argc =, 5, argv [0],=,“prog" argv [1],=,“-d" argv [2],=,“-o" argv [3],=,“ofile" argv [4],=,“data0" argv [5],=, 0;

含有可变形参的函数

<李>

c++ 11新标准提供两种方法编写能处理不同数量实参的函数:

<李>

所有实参类型相同,可以传递一个名为initializer_list的标准库类型。

<李>

实参类型不同,我们可以编写一种特殊的函数,叫做可变参数模板。

<李>

c++还有一种特殊的形参类型:省略符。可以用它传递可变数量的实参。这种功能一般只用于与C函数交互的接口程序。

<李>

<强> initializer_list形参

<李>

其类型定义在同名的头文件中

<李>

提供如下操作:
<代码>
initializer_list低水位体系域;,,//默认初始化,T类型元素的空列表
initializer_listlst {a, b, c…};
//lst的元素数量和初始值一样多,lst的元素是对应初始值的副本;列表中的元素是const
lst2 (lst)
lst2=lst,//拷贝或复制一个initializer_list对象不会拷贝列表中的元素;拷贝后,原始列表和副本元素共享
lst.size(),//列表中元素的数量
lst.begin()//返回指向lst中首元素的指针
lst.end (),//返回指向lst中尾元素下一位置的指针

返回类型和返回语句

<李>

引用返回左值,其他返回类型得到右值。

c++中函数怎么用