1、概述:
作用:
将一段经常使用的代码封装起来,减少重复代码 一个较大的程序,一般分为2若干个程序块,每个模块实现特定的功能
2、函数的定义
函数的定义一般主要有5个步骤:
1.返回类型
2.函数名
3.参数列表
4.函数体语句
5.return 表达式
语法:
返回类型 函数名 (.参数列表) {函数体语句 return 表达式}
返回值类型 :
一个函数可以返回一个值。在函数定义中
函数名 :
给函数起一个名字
参数列表 :
使用该函数时,传入的数据
函数体语句:
花括号内的代码,函数内需要执行的语句
return表达式:
和返回值类型挂钩,函数执行完后,返回相应的数据
eg:
#include <iostream>
using namespace std;
int add(int num1, int num2);
int main()
{
cout << "函数练习:" << endl;
//1.返回类型
//2.函数名
//3.参数列表
//4.函数体
//5.return 表达式
//返回类型 函数名 参数列表 {函数语句 return 表达式}
//返回两个数相加的和
int num = add(40, 50);
cout << "两个数相加的和是:"<< num << endl;
system"pause";
return 0;
}
int add(int num1, int num2)
{
int num3 = num1 + num2; return num3;
}
3、函数的调用
功能:
使用定义好的函数
语法:函数名(参数)
#include <iostream>
using namespace std;
//定义加法函数
//函数定义的时候,num1和num2并没有真实的数据
//她只是一个形式上的参数,简称形参
int add1(int num1, int num2)
{
int sum = num1 + num2;
return sum;
}
int main()
{
cout << "函数的调用练习:"<< endl;
//main函数中调用add函数
int a = 10;
int b = 20;
//函数调用语法,函数名称(参数)
//a和b称为 实际参数 ,简称实参
//当调用的时候,实参的值会传递给形参
int c = add1(a, b);
cout << "c = "<< c << endl;
a = 500;
b = 100;
c= add1(a, b);
cout << "c = "<< c << endl;
system("pause");
return 0;
}
4、值传递 所谓值传递:
就是函数调用时实参将参数传入给形参
值传递时:
如果形参发生变化,并不影响实参
eg:
#include <iostream>
using namespace std;
//交换两个数的值的函数
void swap(int num1, int num2)
{
cout <<"交换前:" << endl;
cout << "num1 = " << num1 << endl;
cout << "num2 = " << num2 << endl;
cout << "交换后:" << endl;
cout << "num1 = "<< num1 << endl;
cout << "num2 = " << num2 << endl;
}
int main()
{
cout <<"函数值传递练习:" << endl;
int a = 89;
int b = 71;
swap(a, b);
cout << "a = "<< a << endl;
cout <<"b = " << b << endl;
system("pause”);
return 0;
}
注:当值传递时,形参是修饰不了实参的
5、函数的常见样式 常见的函数样式有4种:
1.无参无返回
2.有参无返
3.无参有返
4.有参有返
eg:
#include <iostream>
using namespace std;
//1.无参无返
void test01()
{
cout << “this is test01.”<< endl;
}
//2.无参有返
int test02()
{
cout << “this is test02.” << endl;
return 1000;
}
//3.有参无返
void test03(int a)
{
cout <<“this is test03 a = ” << a << endl;
}
//4.有参有返
int test04(int a)
{
cout << “this is test04.”<< endl;
return a;
}
int main()
{
cout <<“函数常见样式练习:”<< endl;
//1.无参无返
test01();
//2.无参有返
int a =test02();
cout << “a = ” << a << endl;
//3.有参无返
test03(10);
//4.有参有返
int b = test04(45);
cout <<“b =” << b << endl;
system(“pause”);
return 0;
}
6、函数的声明
作用:
告诉编译器函数名称及如何调用函数,函数的实际主体可以单独定义、 函数的声明可以有多次,但是函数的定义只能由一次
eg:
#include <iostream>
using namespace std;
//函数的声明
//比较函数,实现两个整型数字进行比较,返回最大的值
//函数的声明
int max(int a, int b);
int main()
{
cout << “函数的声明练习:” << endl;
cout << max(10,2 )<<endl;
system(“pause”);
return 0;
}
//函数的定义
int max(int a, int b)
{
return a > b ? a : b;
}
7、函数的分文件编写
作用:
让代码结构更加清晰 函数分文件编写一般有4个步骤:
1.创建后缀名为.h的头文件
2.创建后缀名为.cpp的源文件
3.在头文件中写函数的声明
4.在源文件中写函数的定义
eg:
.h
#pragma once
#ifndef __函数的分文件编写_H
#define __函数的分文件编写_H
int max1(int a, int b);
#endif //__函数的分文件编写_.H
.cpp
#include "06函数的分文件编写.h"
int max1(int a, int b)
{
return a > b ? a : b;
}
main程序
#include <iostream>
#include“06函数的分文件编写.h”
using namespace std;
//1.创建后缀名为.h的头文件
//2.创建后缀名为.cpp的源文件
//3.头文件写函数声明
//4.在源文件中写函数的定义
int main()
{
cout << “函数的分文件练习:” << endl;
cout << max1(12, 25)<<endl;
system(“pause”);
return 0;
}