一.函数的作用
函数的作用:将一段经常使用的代码封装起来,减少代码的重复使用。例如,一个较大的程序分成了若干个部分,每个部分都要写特定的功能。
二.函数的定义
函数的定义语法:
返回值类型 函数名(参数列表)
{
函数体语句
return 表达式
}
#include <iostream>
using namespace std;
int add(int num1,int num2) //定义一个加法函数
{
int add=num1+num2;
return add; //返回一个整型变量
}
int main () //主函数
{
return 0;
}
三.函数的调用
1.函数的调用
功能:使用定义好的函数。
语法:函数名(参数)
#include <iostream>
using namespace std;
//在函数定义的时候,num1和num2没有真实的数据,所以,它只是形式上的参数,简称形参。
int add(int num1,int num2) //定义一个加法函数
{
int c=num1+num2;
return c; //返回一个整型变量
}
int main () //主函数
{
int a=10,b=20;
//调用add函数
int sum=add(a,b);//调用时的a,b称为实际参数,简称实参
//当调用函数的时候,实参的值会传递给形参
//当形参有了值之后,就会把值返回给c,再把值赋值给变量sum
cout << sum << endl; //30
a=1,b=2;
//调用add函数
sum=add(a,b);//调用时的a,b称为实际参数,简称实参
cout << sum << endl; //3
return 0;
}
2.总结
形参和实参的区别:
形参:从字面意思来看,它是形式上的参数,也就是它没有具体的值。
实参:从字面意思来看,它是实际上的参数,也就是它有具体的值。
区别:定义函数时的括号里的参数是形参,调用函数时的括号里的参数是实参
调用函数的流程:①将实参的值传递给形参。
②形参有了值,返回这个值。
③把这个值赋值给主函数中的变量。
四.值传递
1.值传递
值传递:函数调用时实参将数值传入给形参。
#include <iostream>
using namespace std;
//定义函数,写一个两个数字的交换的函数
//如果函数不需要返回值,声明的时候可以写void
void swap(int num1,int num2) //有了void,就不用返回值,就删除return,或者return后面不加数字
{
cout << "交换前:" << endl;
cout << num1 << "\t";
cout << num2 << endl;
cout << "交换后:" << endl;
int temp =num1;
num1 =num2;
num2 =temp;
cout << num1 << "\t";
cout << num2 << endl;
//return;
}
int main () //主函数
{
int a=1,b=2;
swap(a,b);
return 0;
}
运行效果
结论:值传递时,如果形参发生变化,就不会影响实参。
2.一张图理解这个案例
五.函数的常见样式
1.无参无返
#include <iostream>
using namespace std;
//无参无返(没有参数和返回值)
void test()
{
//无类型不可以创建变量,原因是无法分配内存,例如void a=10是错误的。
cout << "this is test" << endl;
}
int main()
{
test(); //函数调用
return 0;
}
运行效果
2.有参无返
#include <iostream>
using namespace std;
//有参无返(有参数和没返回值)
void test(int a) //形参
{
cout << "this is test---" << a << endl;
}
int main()
{
test(100); //函数调用,将参数100传给a
return 0;
}
运行效果
3.无参有返
#include <iostream>
using namespace std;
//无参有返
int test() //形参
{
cout << "this is test" << endl;
return 100;
}
int main()
{
int num=test();
cout << num << endl;
return 0;
}
运行效果
4.有参有返
#include <iostream>
using namespace std;
//有参有返
int test(int a) //形参
{
cout << "this is test---" << a << endl;
return 100;
}
int main()
{
int num=test(200);
cout << num << endl;
return 0;
}
运行效果
六.函数的声明
作用:告诉编译器函数名称以及如何调用函数。
#include <iostream>
using namespace std;
//声明可以是多次,但是定义只能是一次
//函数的声明:提前告诉编译器的存在
int max(int a,int b);
//可以写,也可以不写。
//如果下面定义的比较函数放在了主函数的后面,那就最好写一下,为了提前告诉编译器的存在。
int max(int a,int b) //比较函数,实现两个整数数字进行比较,返回较大的值
{
return a>b?a:b;
}
int main()
{
int a=10,b=20;
int num=max(a,b);
cout << "max=" << num << endl;
return 0;
}
运行效果
结论:函数的声明可以多次,但是定义只有一次。
七.函数的分文件编写
作用:让代码的结构更加清晰。
函数分文件编写一般有4个步骤:
1.创建后缀名.h的头文件。
max.h
2.创建后缀名为cpp的文件。
max.cpp
3.在头文件中写函数的声明
#include <iostream>
using namespace std;
//函数的声明
int max(int a, int b);
4.在源文件中写函数的定义
//函数的定义
int max(int a, int b)
{
return a > b ? a : b;
}
四个步骤之后,就到了主函数
#include "max.h" //引入自己写的头文件
int main()
{
int a = 10, b = 20;
int num = max(a, b);
cout << "max=" << num << endl;
return 0;
}
八.系统函数
#include <iostream>
using namespace std;
int main() //主函数
{
cout << "开始" << endl;
system("pause"); //先出现“请按任意键继续...”。点击任意键之后,再出现结果。
system("cls"); //清除
cout << "结束" << endl;
return 0;
}
没清除前的效果
清除后的效果
篇章
上一篇:C++基础教程10-数学运算
下一篇:C++基础教程12-指针
转载:https://blog.csdn.net/William_fang/article/details/115919093
查看评论