C++ 复习函数的基本知识
C++ 复习函数的基本知识
要使用 C++ 函数,必须完成如下工作:
1. 提供函数定义;
2. 提供函数原型;
3. 调用函数。
例子:
#include <iostream>
using namespace std;
void simple(); // function prototype
int main() {
cout << "main() will call the simple() function.\n";
simple();
cout << "main() is finished with the simple() function.\n";
return 0;
}
void simple() {
cout << "I'm but a simple function.\n";
}
下面是程序的输出:
执行函数 simple() 时,将暂停执行 main() 中的代码。
1 定义函数
可将函数分为两类,有返回值和无返回值的。没有返回值的函数被称为 void 函数,通用格式如下:
void function(parameterList) {
statement(s)
return; // 可选
}
其中,parameterList(参数列表)指定了传递给函数的参数类型和数量。
例子:
void cheers(int n) { // 无返回值
for (int i = 0; i < n; i++)
std::cout << "Cheers!\n";
}
将 Cheers! 打印指定次数 (n) 。参数列表 int n 意味着调用函数 cheers() 时,应将一个 int 值作为参数传递给它。
有返回值的函数将生成一个值,并将它返回给调用函数。这种函数的类型将被声明为返回值的类型,格式如下:
typeName functionName(parameterList) {
statements
return value; // 返回值
}
对于用返回值的函数,必须使用返回语句。其结果必须是 typeName 类型或可以被转换为 typeName 。
函数在执行返回语句后结束。如果包含多条返回语句,则函数在执行遇到的第一条返回语句后结束。例如:
int bigger(int a, int b) {
if (a > b)
return a;
else
return b;
}
return 后可以写表达式,如:
double cube(double x) {
return x * x * x;
}
此函数为计算三次方,例如函数调用 cube(1,2) 将返回 1.728。
2 函数原型和函数调用
什么是函数原型?
在编译器遇到对特定函数的调用之前,它必须已经知道有关函数的某些内容。特别是,它必须知道函数使用的形参的数量、每个形参的类型以及函数的返回类型。通常,这可以通过在程序中包含一个函数原型来实现。函数原型经常隐藏在 include 文件中。以下例子使用了上文的函数 cheer() 和 cube() 。请留意其中的函数原型。
#include <iostream>
using namespace std;
void cheers(int n);
double cube(double x);
int main() {
cheers(5);
cout << "给我一个数字:";
double side;
cin >> side;
double volume = cube(side);
cout << side << "的三次方是:" << volume << endl;
cheers(cube(2));
return 0;
} void cheers(int n) {
for (int i = 0; i < n; i++)
cout << "Cheers! ";
cout << endl;
} double cube(double x) {
return x * x * x;
}
运行结果:
main() 使用函数名和参数(后面跟一个分号)来调用 void 类型的函数:cheers(5); ,这是一个函数调用语句。但由于 cube() 有返回值,因此 main() 可以将其用在赋值语句中:
double volume = cube(side);
函数原型就相当于声明,如果不写函数原型则需要把要调用的函数写在 main 之前。
原型的语法
函数原型是一条语句,以分号结束。获得原型最简单的方法就是复制函数定义中的函数头,并添加分号。
double cube(double x)
然而,函数原型不需要提供变量名,有类型列表就够了。所以可以写成:
double cube(double)
通常,在原型的参数列表中,可以包括变量名,也可以不包括。原型中的变量名相当于占位符,因此不必与函数定义中的变量名相同。
原型的作用
原型可以极大的降低程序出错的几率。具体来说,原型确保以下几点:
1. 编译器正确处理函数的返回值;
2. 编译器检查使用的参数数目是否正确;
3. 编译器检查使用的参数类型是否正确。如果不正确,则转换为正确的类型(如果可以转换)。
C++ 复习函数的基本知识的更多相关文章
- python基础-基础知识(包括:函数递归等知识)
老男孩 Python 基础知识练习(三) 1.列举布尔值为 False 的值空,None,0, False, ", [], {}, () 2.写函数:根据范围获取其中 3 和 7 整除的所有 ...
- 复习C语言基础知识(day02)
一.大型软件组织 定义规则,规则就是协议.用户和中介的接口. 软件开发的过程: 定义规则,定义协议.软件为用户提供的功能. 在C语言中使用接口实现.接口就是函数. 两种用户 函数的使用者 函数的实现者 ...
- JS中函数的基础知识
函数 一. 函数定义 函数又叫方法,在程序里面函数是用来执行某些特定功能的代码.为了减少重复使用代码,可以把特定功能的代码做成函数,需要使用时拿出来调用.alert();就是一个很常见的.简单的函数 ...
- Python 函数的参数知识汇总
函数搞不熟,后边就晕头转向了,在此重新归纳一下廖大神的函数教程,加深记忆 一.函数的参数分为: 位置参数 def power(x): # x 就是power(x)的一个位置参数,我们调用power(x ...
- Sort函数的相关知识
sort与stable_sort 需包含头文件:#include <algorithm>因为它是库函数 这两个函数的原理都是快速排序,时间复杂度在所有排序中最低,为O(nlog2n) ...
- SQL复习一(基础知识)
1.什么是sql SQL(structure query language)是结构化查询语言,它是对关系型数据库的操作语言.它可以应用到所有的数据库中,例如:MySQL.Oracle.SQL serv ...
- 剑指offer第32题:把数组排成最小的数及关于list.sort()和sorted( Iterable object )函数的相关知识
* 解题思路: * 先将整型数组转换成字符数组,然后将String数组排序,最后将排好序的字符串数组拼接出来.关键就是制定比较规则. * 排序规则如下: * 若ab > ba 则 a & ...
- C++ 函数模板基础知识
为什么要引入模板:为了避免代码重复,程序员可以编写脱离数据类型通用模板. 模板的分类:函数模板 + 类模板 注意:模板的声明或定义只能在全局,命名空间或类范围内进行.不能在函数内进行,比如不能在mai ...
- 复习下VLAN的知识
转载:来自百度百科 VLAN一般指虚拟局域网 VLAN(Virtual Local Area Network)的中文名为"虚拟局域网". 虚拟局域网(VLAN)是一组逻辑上的设备和 ...
- java基础62 JavaScript中的函数(网页知识)
1.JavaScript中,函数的格式 function 函数名(形参列表){ 函数体; } 2.JavaScript中,函数需要注意的细节 1.在javaScript中,函数定义形参时,是不能使用v ...
随机推荐
- 4口高速USB 2.0 HUB控制器 DPU1.1S,兼容替代FE1.1S
DPU1.1S是一款高性能.低功耗 4 口高速 USB2.0HUB 控制器,上行端口兼容高速 480MHz和全速 12MHz 两种模式,4个下行端口兼容高速480MHz.全速12MHz.低速 1.5M ...
- wpf DataGrid相关总结
1.去掉外边蓝框,设置BorderThickness="0"
- 提交from表单,method与浏览器请求显示不一致
<from method="post" action ="/login_check"> 用户名:<input type="text& ...
- leedcode题目 :罗马数字转整数 Java
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 例如, 罗马数字 2 写做 II ,即为两个并列的 1.12 写做 XII ,即为 X + II . 27 写做 XXVII, 即 ...
- ERA5气压层数据驱动WRF的一些问题
感谢Dawn的建议,兰溪之水的WRF教程 参考了一些经验,并结合实际后,成功用ERA5驱动WRF.实际上,用ERA5数据驱动WRF的方法和用ERA-Interim 数据驱动WRF极其类似. 总结几点是 ...
- zookeeper 选举流程源码解析
在开始之前,我们先了解一下zookeeper集群角色,zookeeper中存在leader,follower, observer这么几个角色, leader, follower, 就类似与mysql ...
- Sup, inf convolution for convex functions
Let $\Omega$ be a bounded convex domain in $\mathbb{R}^n$. $f:\Omega\rightarrow\mathbb{R}^n$. If $f$ ...
- mysql数据库连接客户端过多
flush hosts; 清理连接 查看当前连接数 show PROCESSLIST 与 show full PROCESSLIST (查看当前数据库所有连接,包含空闲连接与活跃连接) 查看最大连接数 ...
- 微信退款报错 400 the ssl certificatie error / no required SSL certificate was sent ; Guzzle json_encode Type is not supported;
bug随笔 一 起因. 在做一个点餐类小程序,本地测试ok.上测试的时候,突然就报错,微信退款失败. 二 Debug. 1. Debug trace到页面直接显示的是 : Type is not su ...
- win10家庭版vmwarework启动蓝屏
最终升级到vmwarework16.2.5解决 据说17支持win11 再出问题直接上vm17了