写在前面:
如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持!
【C++语言基础学习】系列文章
第一章 《项目与程序结构》
第二章 《数据类型》
第三章 《运算符》
第四章 《流程控制》
第五章 《Vector向量》
第六章 《String字符串》
第七章 《Array数组》
第八章 《函数》
第九章 《指针》
第十章 《结构体》
文章目录
- 【C++语言基础学习】系列文章
- 一、函数定义
- 二、函数值传递
- 三、函数常见样式
一、函数定义
在C++中,函数是一段可重复使用的代码块,用于执行特定的任务。它可以接受参数并返回一个值。其作用实质上是将一段经常使用的代码封装起来,减少重复代码。
而对于函数的定义,主要有五个步骤。
- 返回值类型
- 函数名
- 参数表列
- 函数体语句
- return表达式
其语法如下。
返回值类型 函数名(参数列表)
{函数体语句return表达式
}
其中,以下是函数的声明部分。
返回值类型 函数名(参数列表);
函数声明是为了告诉编译器函数名称以及如何调用函数。而相比于函数的完整定义,函数声明可以声明多次,定义则只能有一次。
以下是简单的示例。
int add(int num1, int num2)
{int sum = num1 + num2;return sum;
}
这里就是定义返回值类型为整型,函数名为add,设置了num1
和num2
两个整型参数。在函数体语句中,定义一个整型变量sum
承接num1
和num2
相加的和,最后返回变量sum
内的值。
函数调用方法如下所示。
add(1, 2);
返回结果如下。
3
值得注意的是,在定义函数时括号内的参数叫做形参(形式参数),而调用函数时括号内实际输入的参数则被称为实参(实际参数)。
二、函数值传递
在C++中,函数参数可以通过值传递的方式进行传递。值传递是指将参数的值复制到函数的形参中,函数在执行期间使用这个副本来处理数据。简单来说,就是函数在调用时实参将数值传入给形参。而在值传递时,如果形参中发生任何改变,并不会影响实参。
具体示例如下。
void swap(int num1, int num2)
{cout << "交换前:" << endl;cout << "num1:" << num1 << endl;cout << "num2:" << num2 << endl;int temp = num1;num1 = num2;num2 = temp;cout << "交换前:" << endl;cout << "num1:" << num1 << endl;cout << "num2:" << num2 << endl;
}
首先定义一个交换函数swap(num1, num2)
,从函数体内部语句可以看到其作用是将输入的参数内容互换。另外,当不需要返回值时,可以使用void的返回值类型,return语句也可以省略,就如同这个定义的函数一样。
int a = 10;
int b = 20;
cout << "交换前a = " << a << endl;
cout << "交换前b = " << b << endl;
swap(a, b);
cout << "交换后a = " << a << endl;
cout << "交换后b = " << b << endl;
接着,定义变量a
与b
并赋值,在用std::cout
对象输出一下交换前和交换后作为实参的a
和b
的值。
返回结果如下。
交换前a = 10
交换前b = 20
交换前:
num1:10
num2:20
交换前:
num1:20
num2:10
交换后a = 10
交换后b = 20
从输出结果可以看到,在函数交换功能使用后,函数的形参num1
和num2
改变了,但作为实参的a
和b
却并没有改变,这就是值传递令形参改变却不会改变实参。
三、函数常见样式
常见函数样式有4种。
- 无参数无返回值
- 有参数无返回值
- 无参数有返回值
- 有参数有返回值
以下是简单的示例。
#include <iostream>using namespace std;// 1. 无参数无返回值
void test1()
{cout << "this is test1" << endl;
}
// 2. 有参数无返回值
void test2(int a)
{cout << "this is test2 a = " << a << endl;
}
// 3. 无参数有返回值
int test3()
{cout << "this is test3" << endl;return 1000;
}
// 4. 有参数有返回值
int test4(int a)
{cout << "this is test4 a = " << a << endl;return 1000;
}int main()
{// 无参无返函数调用test1();// 有参无返函数调用test2(23);// 无参有返函数调用int num1 = test3();cout << "test3 return:" << num1 << endl;// 有参有返函数调用int num2 = test4(23);cout << "test4 return:" << num2 << endl;
}
返回值结果如下。
this is test1
this is test2 a = 23
this is test3
test3 return:1000
this is test4 a = 23
test4 return:1000
我是EC,一个永远在学习中的探索者,关注我,让我们一起进步!