飞道的博客

C++基础教程11-函数

295人阅读  评论(0)

一.函数的作用

函数的作用:将一段经常使用的代码封装起来,减少代码的重复使用。例如,一个较大的程序分成了若干个部分,每个部分都要写特定的功能。

二.函数的定义

函数的定义语法:

返回值类型 函数名(参数列表)
{
    函数体语句
    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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场