ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 一.函数 ### 1.函数的概念 函数是一个命名的代码块,我们通过调用函数执行相应的代码。函数可以有0个或多个参数,而且(通常)会产生一个结果。 ### 2.函数的定义 ```c++ 返回类型 函数名称(形参列表) { //函数体 } ``` 其中,**形参列表** 可以为空,但是不能省略。每个形参通常用逗号隔开,且需要指定类型。 ### 3.函数的调用 通过函数调用运算符来调用函数。 函数的调用机制: 1. 建立被调函数的栈空间 2. 保护调用函数的运行状态(把PSW的内容写入被调函数)和返回地址(把PC的内容写入被调函数) 3. 传递参数 4. 将控制权转交被调函数 ### 4.函数的返回 1. 除了 **数组** 和 **函数** 之外,任何类型均可作为返回类型。 2. 从函数返回值时,会在主调函数与被调函数之间临时开辟一段内存用于存放返回值,再将返回值拷贝到接收返回值的变量。拷贝完毕后删除临时开辟的一段内存。 3. \[11+\][$]**尾置返回类型** + 任何函数的定义都能使用尾置返回,一般用于返回类型比较复杂的情况。 + 尾置返回类型跟在形参列表后面并以一个 `->` 符号开头。为了表示函数真正的返回类型跟在形参列表之后,我们在本应该出现返回类型的地方放置auto。 + 函数的尾置返回值在函数参数之后,可以使用函数参数。如 `decltype(arg)` ```c++ auto return_a_array_reference() -> int (&)[10]; ``` ## 二.函数声明 1. 什么时候需要函数声明 >当函数调用点在函数定义点之前时,需要声明函数原型。 2. 函数声明的格式:将函数定义语句复制过来后面加个分号即可,也可以去掉形参名称。 ```c++ int fun(int a,int b);//合法的声明语句 int fun(int,int);//合法的声明语句 //定义语句 int fun(int a,int b) { } ``` ## 三.主函数 + 每个程序有且只有一个main函数。 + 每个程序的运行都从main函数开始,到main函数结束。 + 主函数可以附带两个命令行参数: + **argc** 参数的个数 + **argv** 字符指针数组,参数的内容 >[info]命令行:test.exe cpp is fun >argc:4 >argv:”test.exe”、”cpp”、”is”、”fun”