Visual Studio2017C++学习笔记(六)-函数

前言

软件为visual studio2017,内容为C++学习笔记,以及相关的问题处理方法,目的是方便回顾和复习。
笔记来自于:黑马程序员C++教程。


一、函数概述

作用:将一段经常使用的代码封装起来,减少重复代码。
一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能。

二、函数定义的步骤

函数定义一般分为5个步骤:

1.返回值类型

  • 返回值类型:一个函数可以返回一个值。

2.函数名

  • 给函数起一个名称

3.参数列表

  • 使用该函数时,传入的数据

4.函数体语句

  • 花括号中的代码,函数内需要执行的语句

5.return表达式

  • 和返回值类型挂钩,函数执行完,返回响应的数据。

代码如下(示例):

返回值类型 函数名(参数列表){

	函数体语句

	return 表达式
}

6.案例

1、返回值类型 int
2、函数名     add
3、参数列表   (int num1,int num2)
4、函数体语句  int sum = num1 + num2
5return 表达式 return sum;
6、语法:
返回值类型 函数名(参数列表)
{
	函数体语句

	return 表达式
}
//伪代码:
int add(int num1,int num2){
	int sum = num1+num2;
	return sum;
}

可读性代码:

#include 
using namespace std;
#include 
//函数的定义
//语法:
//返回值类型 函数名(参数列表){函数体语句 return表达式}

//加法函数,实现两个整型相加,并且将相加的结果返回
int add(int a, int b) {

	int sum = a + b;
	return sum;
}
int main() {
	
	//1、创建一个函数,功能是传入两个整型数据,计算数据相加的结果,并且返回。
	int res = add(2,3);
	cout << res << endl;
	system("pause");
	return 0;
}

三、函数的调用

1.功能

  • 使用定义好的函数

2.语法

  • 语法函数名(参数)

3.示例

定义中的num1,num2并没有真是数据
//它只是一个形式上的参数,简称为形参
int add(int num1, int num2) {

	int sum = num1 + num2;
	return sum;
}

int main() {
	//在main函数中调用add函数
	int a = 10;
	int b = 10;

	//函数调用语法:函数名称(参数)
	//a和b称为 实际参数,简称实参
	//当调用函数的时候,实参会传递给形参
	int c = add(a,b);
	cout << c << endl;
	system("pause");
	return 0;
}

四、函数的值传递

1.解释

所谓值传递,就是函数调用时实参将参数值传递给形参

2.注意

值传递时,如果形参发生,并不影响实参

3.案例

//值传递
//定义函数,实现两个数字进行交换函数
//如果函数不需要返回值,声明的时候可以写void,表示无类型。
void swap(int num1, int num2) {
	cout<<"交换前:"<<endl;
	cout << num1 << endl;
	cout << num2 << endl;

	int temp = num1;
	num1 = num2;
	num2 = temp;

	cout << "交换后:" << endl;
	cout << num1 << endl;
	cout << num2 << endl;
}
int main() {
	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;

	system("pause");
	return 0;
}

Visual Studio2017C++学习笔记(六)-函数_第1张图片

  • 原理:
    实参的值不发生改变的原理是:值交换函数的两个形参,在运行的过程中自己开辟了新的内存空间,进行交换,与实参所开辟的内存空间相互没有影响。所以,形参的值发生改变,不影响实参的值。
  • 小结:
    形参的值是改变不了实参的。

四、函数的常见样式

  • 函数的常见样式有4种。
/函数的几种样式
//1、无参无返
void test01() {
	cout << "this is test01" << endl;
}
//2、有参无返
void test02(int a) {
	cout << "this is test02 a = " << a << endl;
}
//3、无参有返
int test03() {
	cout<<"this is test03 "<<endl;
	return 1000;
}
//4、有参有返
int test04(int a) {
	cout << "this is test04 a = " << a << endl;
	return a;
}
int main() {
	//1、无参无返的函数调用
	test01();
	//2、有参无返的函数调用
	test02(100);
	//3、无参有返的函数调用
	int num1 = test03();//使用num1去接收这个结果
	cout << "num1 = "<<num1 << endl;
	//4、有参有返的函数调用
	int num2 = test04(1000);//使用num2去接收这个结果
	cout << "num2的值为:"<<num2 << endl;
	
	system("pause");
	return 0;
}

五、函数的声明

1.作用

  • 作用:告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义。
  • 函数的声明可以多次,但是函数的定义只能有一次
  • 提前告诉编译器函数的存在,可以利用函数的声明,这样就可以在int main()函数以后进行定义函数
  • 如果没有提前进行函数声明,只能在int main()函数之前定义函数,进行函数声明后,可以在int main( )后面进行函数定义。

2.示例

//函数声明。
//函数可以多次声明,但是只能定义一次。
int max(int a, int b);
//函数定义
int max(int a, int b) {
	return a > b ? a : b;
}
int main() {

	int num1 = 3;
	int num2 = 5;
	int res = max(num1, num2);
	cout << "num1 = " << num1 << endl;
	cout << "num2 = " << num2 << endl;
	cout<<"numn1和num2中的最大值为:"<<res<<endl;
	system("pause");
	return 0;
}

六、函数的分文件编写

1.作用

  • 作用:让代码结构更加清晰

2.步骤

函数分文件编写一般分为4个步骤
(1)创建后缀名为.h的头文件
(2)创建后缀名为.cpp的源文件
(3)在头文件中写函数的声明
(4)在源文件中写函数的定义
(5)将源文件与头文件建立联系。

3.示例-函数的分文件编写

  • 实现两个数字进行交换的函数
  • 函数声明,可以移动到头文件中

1、创建.h后缀名的头文件

创建swap.h头文件。

2、创建.cpp后缀名的源文件

创建swap.cpp源文件

3、在头文件中swap.h中写函数的声明

函数的声明
# include 
using namespace std;
void swap(int num1, int num2);

4、在源文件swap.cpp中写函数的定义

/函数的定义
//" "双引号表示引入自定义的文件
#include "swap.h"
void swap(int num1, int num2) {
	int temp = num1;
	num1 = num2;
	num2 = temp;

	cout << "num1 = " << num1 << endl;//可以将文件从swap.h的头文件中引入
	cout << "num2 = " << num2 << endl;
}

5、将头文件和源文件进行关联


#include 
using namespace std;
#include 
#include "swap.h"
//将头文件swap.h包含进来

int main() {
	//直接在main()函数中调用swap()函数即可。
	int a = 10;
	int b = 20;
	swap(a, b);
	cout << a <<"\n"<< b << endl;

6、小结
建立与函数名同名的头文件和源文件头文件添加声明源文件进行函数的编写,在一般文件进行函数调用时,直接引入函数名同名的头文件即可。


总结

本章重点为函数的定义及使用,以及函数的分文件编写,函数的分文件编写要熟练掌握,为了以后的大型项目开发做准备。

你可能感兴趣的:(c++,visual,studio,学习)