函数有自己的语法结构,必须按照这种结构写才可以。
返回值类型 函数名(参数列表){
函数体;
return 值;
}
一、返回值类型
也叫数据类型,就是使用这个函数的时候,期望得到的结果。
类型可以是 int
、float
、double
等,也可以说 void
类型。void
类型指的是空
,也就是不需要结果。
所以,如果是int
等类型,函数需要有返回值 return 值
,这个值要和返回值类型一致。
如果是 void
,不需要有返回值,可以不写return
,或者写 return ;
。
int qiuHe(int x, int y){//求和,这个函数需要返回求和结果
int a = x + y;
return a;
}
void shuChu(){//输出内容,这个函数不需要返回值
}
二、函数名
函数名和变量名类似,就是一个标识符(由字母、数字、下划线组成)。函数名和变量名要能准确的表达我们需要的功能,这样别人使用这个函数的时候,就知道它的干嘛的了。
三、参数列表
指的是参数类型和个数。也就是我们使用这个函数(功能)的时候,需要提供的东西。
比如计算两个数字的和,你要提供两个数字才能计算。这两个数字就是参数列表。
void shuChu() //无参函数
int qiuHe(int x, int y) //x和y就是参数
函数如果有多个参数,要用,
隔开。当然函数也可以没有参数,也就是小括号()
中是空的,不写任何东西。
有参数列表的函数可以叫做有参函数
,无参数列表的函数可以叫做无参函数
。
四、函数体
函数体就是要执行的代码,用{}
包含起来。函数体的代码执行过程就是完成任务的过程。如果没有函数体,那么这个函数就是一个空函数。
int qiuHe(int x, int y){//求x到y之间所有数字的和
int a = 0;
for(int i = x; i <= y; i++){
a = a + i;
}
return a;
}
在函数体中,可以混合使用 if
、for
等结构体,以此来完成对应的代码逻辑。
五、返回值
返回值就是这个函数最终产出的结果,用return 值
的形式表示。
如果函数的返回值类型是void
,那么可以不写return
;如果返回值是其他类型,就必须写return 值
。
int qiuHe(int x, int y){//求x到y之间所有数字的和
// 如果 x > y
if(x > y){
cout << "x不可以大于y" << endl;
return -1; //遇到return程序会终止
}
// 如果 x <= y 那么执行下方语句
int a = 0;
for(int i = x; i <= y; i++){
a = a + i;
}
return a;
}
一个函数中可以有多个return
语句,但是只能执行一个,一旦执行了return,那么函数的执行就结束了。
六、函数定义的位置
函数需要在使用之前定义。
各个函数是独立定义的,不能在一个函数中定义另外一个函数,也就是说函数是不能嵌套定义。
七、函数的调用
函数的调用就是使用这个函数。调用的语法是:
函数名(参数列表); //没有返回值类型的函数调用
数据类型 变量名 = 函数名(参数列表);//有返回值类型的函数调用
函数调用案例
int main(){
int a = qiuHe(100, 200);//调用 qiuHe 函数
cout << "求和:" << a << endl;
return 0;
}
调用时的参数列表要和函数定义的时候参数保持一致。
如果函数有返回值,那么可以把返回值赋值给一个自己定义的变量。当然不写也可以正常运行,那就失去了返回值的意义了。
八、函数的作用域
在函数内定义的变量,它的作用域只属于这个函数,超过了这个范围就是不可访问的。
比如main
函数中定义的变量,在main
函数之外不能访问。对于全局的变量和常量,在任何函数中都可以使用。