B
A
D
对第二题作补充:
函数的定义和调用函数是一个命名的代码块,是程序完成其操作的场所。在程序设计中,有许多算法(解决问题的 方法)是通用的,例如求一个数的平方根,解一元二次方程。如果将这些算法定义为一个函数,程序 员就可以在程序中需要这些算法的地方使用它们(而不必再作定义)。描述一个函数所执行的算法 的过程称为函数定义,而使用一个函数的过程称为函数调用。 一个函数总是为完成一定的任务而设计的,但在每次使用时所处理的数据是不同的,函数可带 有参数,用于表示它所处理的数据。一个函数在执行完它的任务之后,一般情况下要向它的使用者 返口一个值,这个值称为函数的返回值,
函数的定义
函教定义的一般格式
在程序中使用函数必须先做说明。函数说明分为定义性说明(简称函数定义)和引用性说明(以 后简称函数说明)。定义性说明指定了一个函数名及其所代表的代码(函数体)。引用性说明只说明了函数名而没有指定函数体,它主要用于引用在程序的其它地方定义的函数,典型的情况是函数的 使用出现在函数的定义之前,以及引用在其他模块中(例如系统库中)定义的函数。
函数定义的一般形式是:
类型 函数名(参数表)
函数体
函数定义指定了一个函数名和函数的类型,函数名是一个有效的C++标识符,函数的类型规定为该函数所返回值的类型,它可以是除数组和函数之外的任何有效的C++数据类型。如果一个函数不返回值,则返回类型指定为void类型。 函数定义也指定了一个参数表,它是用逗号隔开的一个变量名说明列表,这些变量称作函数的 形参,它们用于接收调用函数时传送给这个函数的数据。参数表可以为空,这表明函数不需要从调 用者那里接收数据。即使参数表为空,函数名后的一对圆括号也不能省略。 花括号内括起的函数体是一个语句序列,用于描述这个函数所要执行的操作。当函数返回一个值时,在这个函数体中必须有一个return语句。下面定义的函数sum用于求两个数之和。
int sum(int x , int y)
{
int temp;
temp=x+y;
return temp;
}
函数sum带有两个整型参数调和y,其中的return语句将参数x和y相加之后的值返回给它的调用者,函数的类型为int。 从函数sum的定义中可知,在参数表中进行变量说明时,每个变量必须分别指定类型和名字。
下述说明方法是不正确的:
int sum(int x, y)//incorrect
函数调用
函数调用是由函数名和函数调用运算符()组成的一个表达式,
其一般形式为:
函数名(实参表)
实参表是用逗号隔开的一个表达式列表,其中的每个表达式的值称为实参。在函数调用时,实参的值传给了形参;在实参表中,实参的个数必须和形参的个数相同,实参的类型必须和对应的形参的 类型一致。函数调用表达式的类型为在函数定义中为该函数指定的类型,如果其类型不为void的) 话,这个表达式值就是函数定义中的return语句所返回的值,否则它表示一个无值表达式。
例如调用表达式: sum(10,5) 的类型为int,在函数调用过程中,实参10赋给了形参x,5赋给了形参y,在函数返回时,该表达式的值为15,这个值可以作为操作数在表达式中参与运算,例如:
c=sum(10,5);
函数调用的执行过程可以示意说明为:
main() { c = sum(10,5);调用------------------> int sum( Int x, Int y) { int temp; temp=x十y; return temp;返回 } 在main函数中,返回值赋给c,...}
即在对调用表达式求值时,程序转去执行函数sum中的第一条语句,当遇到return语句时,又返回到调用发生点,程序接着在调用点后开始执行,即将返回值置给变量c。
下面所列的程序供读者验证上面所作的解释。
#include <iostream.h>
int sum(int x, int y)
{
int temp;
temp=x十y;
return temp;
}
void main()
{
int a, b, c;
a=10;
b=5;
c=sum(a,b);
cout << c;
}
当在函数定义中没有指定形参时,调用表达式中的实参表为空,但函数调用运算符不能缺省。 例如:
int value()
{
return 5*10;
}
void main()
{
cout << value();
}
参考资料:http://www2.ratvu.com/dubiao/cpp/05/01.htm#a