C++函数基础

199 阅读3分钟

启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第30天,点击查看活动详情

之前聊过,在编程过程当中,如果遇到有规律的重复,比如:输出10次'hello word‘,这样的需求为了方便代码的维护,可以采用循环来解决,那么假如有一段代码功能,需要被重复的时候,但是使用没有规律呢,比如:加密,在注册用户,登录或者登录校验等等地方都可能用到,那么这种情况下,同样需要关注代码的可维护性(发生修改之后,是不是可以很方便的进行修改),那么这个时候就用到函数。

函数介绍

函数实际上就是将一个功能的代码写到一个代码块当中,然后起一个名字,之后再次使用这个功能的时候,不再重复编写或者复制代码,而是通过定义的名字去调用已经完成的那个功能,达到使用功能的效果,而功能发生修改,修改函数的语句块,所有调用部分会跟着修改,类似生活当中做蛋糕:蛋糕师可以一次一次重复的完成一个类型的蛋糕(比如:圣诞快乐蛋糕),但是重复的需求太多了,所以蛋糕师搞了一个制作这一类型蛋糕的模型,只需要添加原材料,就会自动的创建出蛋糕,那之后就不再手动做这一风格的蛋糕,而是采用模型,这样速度快,并且做出来的蛋糕更加标准,如果修改的话,修改模具即可,那这里的模具原理和函数编程原理是类似的。

C++的函数包括:返回值类型,函数名称,0到多个形参组成的函数列表以及函数体构成,其中:

1、返回值类型是用来声明函数返回的结果类型的,

2、函数名称就是函数的名字,在调用函数的时候用名称调用

3、形参,可以理解为提供给函数内部使用,可以再调用过程当中传递的局部参数

3、函数体就是具体函数的功能

所以,C++函数的格式如下,以阶乘为例:

int fact(int num){ //定义函数的类型,名称,形参,这里的形参有一个,是int类型
    int result = 1;
    while(num > 1){
        result *= num--;
    };
    return result; //返回结果
}

这个函数当中:

1、定义了函数返回的数据类型是int类型,

2、函数的名称是fact

3、函数的形参是一个int类型的 num

4、功能是通过一个中间变量result和num不断递减相乘,得到num的阶乘

5、这里要注意,return可以返回函数当中的值,并且结束函数功能,这里就是把经过while循环的最终result返回出来,然后结束函数的调用,这里一定要注意的是,return之后,函数结束,所以函数内部写在return后面执行的代码其实是无法执行的。

函数调用

函数定义完成之后,就需要使用,C++当中通过调用运算符调用函数,具体的形式就是函数名称或者指向函数的指针然后加括号,括号内对对应的形参进行具体的传值,以上面的函数为例:

#include <iostream>
using namespace std;
​
int fact(int num){
    int result = 1;
    while(num > 1){
        result *= num--;
    };
    return result;
}
​
​
int main(){
    int res = fact(5); //调用函数,获取函数的返回值赋值给res
    cout << res << endl;
    return 0;
}
​

这里,函数调用完成了两件事:

1、实例化函数,为新参进行传参。

2、中断main函数的执行,开始执行fact函数,直到fact函数执行完成。

注意

这里有几个细节需要强调一下:

1、函数的参数分为形参和实参,形参指的是定义函数时定义的参数,实参指的是调用函数时候传递的具体参数值。函数的形参可以为空,但是不可以省略,可以使用空参数列表或者按照C语句的风格使用void关键字进行表示:

#include <iostream>
using namespace std;
​
int fun1(){  //采用空参数列表,表示没有形参
    return 0;
}
​
int fun2(void){ //采用void表示没有形参
    return 1;
}
​
int main(){
    int res1 = fun1(); //调用不需要传递实参
    int res2 = fun2(); //调用不需要传递实参cout << res1 << endl;
    cout << res2 << endl;
    
    return 0;
}
​

2、函数的返回值也是一个道理,有的函数有返回值,但是又的函数没有返回值,没有返回值的函数需要使用void关键字来声明函数的返回类型。

#include <iostream>
using namespace std;
​
void fun3(){
   cout << "hello word" << endl;
}
​
int main(){
    fun3();
    return 0;
}
​

关于函数的基础就先聊这么多,还是欢迎各位大佬多多指点。