内容正文:
函数和预处理
函数又称过程或子程序,它将多行代码集合在一起,用于实现某个功能,程序在每次需要实现这个功能时添加一条函数调用语句即可。采用这种方法,不仅能减少程序的源代码量,也会使程序显得更清晰、更简洁,并增加了程序的可维护性。本章主要介绍函数的概念、分类和组成,函数的定义和调用,函数参数的传递,函数的递归调用,内联函数的应用等。
编译器在对源程序进行编译生成目标代码前,先用编译预处理程序对源程序进行预处理,如将程序中多余的空格、换行符、制表符、注释删除和进行宏替换等。可以在C++源程序中添加一些编译预处理命令,以改进程序设计环境,提高编程效率。预处理命令是C++统一规定的,实际上它并不是C++语言的组成部分。C++提供的预处理功能主要包括宏定义、文件包含和条件编译。
4.1 函数的定义和调用
Add your text in here
Click to add Text
求解方程y=ax+b的根
案例引入
定义一个求解一元一次方程y=ax+b根的函数,并在主函数main()中进行调用。
4.1 函数的定义和调用
#include "stdafx.h"
#include <iostream.h>
int main(int argc, char* argv[])
{
double f(double y,double a,double b); //函数声明
double a,b,y,x;
cout<<"请输入a、b和y的值:"<<endl;
cin>>a>>b>>y;
x=f(y,a,b); //调用函数
cout<<"方程的根为:"<<x<<endl;
return 0;
}
double f(double y,double a,double b) //定义函数
{
double x;
x=(y-b)/a;
return x;
}
源代码展示
4.1 函数的定义和调用
运行结果
程序分析
上述程序定义了一个求解一元一次方程y=ax+b的根的函数。该函数的函数名为f,函数的返回值类型为double,形参列表包含3个double类型的参数,分别为double y,double a,double b。函数最后通过return语句将求解的结果返回给主调函数。主函数main()中对函数f()进行调用的语句为:
x=f(y,a,b);
知识讲解
函数的定义
函数的调用
类型标识符 函数名(形参列表)
{
声明部分
语句
}
类型标识符规定了函数的返回值类型,也规定了该函数的类型。函数调用结束后,返回一个该类型的值,即函数的返回值。
函数名(实参列表)
实参列表中的参数是由主调函数传递给被调用函数的数据,实参列表中参数的个数和应该和形参列表中的个数相等,类型应该相匹配。如果调用无参函数,则实参列表可以为空,但括号不能省略。
4.2 函数参数传递
Add your text in here
Click to add Text
采用值传递的方式实现将两个输入的整数交换后输出
案例引入
定义一个实现两个整数交换的函数swap(),并在主函数main()中调用。要求实参与形参传递时采用值传递的方式。
4.2.1 值传递
4.2.1 值传递
#include "stdafx.h"
#include <iostream.h>
int main(int argc, char* argv[])
{
void swap(int x,int y); //声明函数
int a,b;
cout<<"请输入两个整数:"<<endl;
cin>>a>>b;
cout<<"交换前:"<<endl;
cout<<"a="<<a<<",b="<<b<<endl;
swap(a,b); //调用函数
cout<<"交换后:"<<endl;
cout<<"a="<<a<<",b="<<b<<endl;
return 0;
}
void swap(int x,int y) //定义函数,交换变量x和y的值
{
int temp;
temp=x;
x=y;
y=temp;
}
源代码展示
4.2.1 值传递
运行结果
程序分析
在上述程序中,由于实参和形参采用了值传递的方式,只是将实参的一个副本传递给形参,函数仅仅对该副本进行了修改,而对实参本身没有任何影响,因此作为实参变量的a和b的值在函数swap()调用前后没有发生变化。