函数与预处理(一)
一.概述
-
一个程序必须有且只有一个main( )函数,C++从main( ) 函数开始执行
-
C++语言中,所有函数都是平行独立的,无主次、相互包含之分。函数可以嵌套调用,不可嵌套定义
-
C++程序是由函数构成的,函数是C++的基本模
块。一个程序中函数调用的示意图
例:
void printstar() //定义printstar函数
{
cout<<"****************************** "<<endl;
}
void print_message() //定义print_message函数
{
cout<<" Welcome to C++!"<<endl;
}
void main()
{
printstar( ); /
二:函数分类
1。 从用户使用的角度看,函数有两种:
(1). 系统函数,即库函数。这是由编译系统提供的,用户 不必自己定义这些函数,可以直接使用它们
(2). 用户自己定义的函数。用以解决用户的专门需要。用户在设计程序时,可以将完成某一相对独立功能的程序定义为一个函数。用户在程序中,根据应用的需要,由用户自己定义函数,这类函数称为用户自定义的函数
2.从函数的形式看,函数分两类:
(1). 无参函数。调用函数时不必给出参数。
( 2). 有参函数。在调用函数时,要给出参数。在主调函数
和被调用函数之间有数据传递
三. 定义函数的一般形式
定义无参函数的一般形式
类型标识符 函数名()
{声明部分
语句
}
void printstar() //定义printstar函数
{
cout<<"************ "<<endl;
}
例:
void printstar(){
for( int i=0;i<12;i++)
cout<<"*";
cout<<endl;
}
main()
{
for(int j=0;j<8;j++)
printstar();
}
void printstar (void )
{ cout<<"* * * * * * * * * * *\n";
}
void print_message (void)
{ cout<<"How do you do! \n";
}
void main(void )
{ printstar ( );
print_message ( );
printstar( );
}
四.定义有参函数的一般形式
类型标识符 函数名(形式参数表列)
{声明部分
语句
}
int max(int x,int y)
{int z;
z=x>y?x:y;
return (z);
}
注意:
C++要求在定义函数时必须指定函数的类型。
五.函数参数和函数的值
- 在定义函数时 形式参数和实际参数 函数名后面括号中的变量名称为 形式参数(formal parameter,简称形参)。
- 形参是被调函数中的变量
- 在主调函数中调用一个函数时,函数名后面括 号中的参数(可以是一个表达式)称为实际参数 (actual parameter,简称实参)。
-
实参是主调函数赋给被调函数的特定值。
-
实参可以是常量、变量或复杂的表达式,不管是哪 种情况,在调用时实参必须是一个确定的值
注意:
- 在函数调用前,形参并不占内存的存储单元,只有在函 数开始调用时,形参才被分配内存单元。调用结束后,形 参所占用的内存单元被释放
- 实参可以是常量、变量或表达式,但要求有确定的值。
- 实参变量对形参变量的数据传递是"值传递",即单向传
递,只由实参传给形参,而不能由形参传回来给实参。在
内存中实参、形参分占不同的单元 - 实参与形参一一对应,类型应相同或赋值兼容
- 不同的函数中可以使用相同的变量名和形参名,他们是
不同的变量。
六:函数的返回值
-
函数的返回值通过return语句获得。
-
函数只能有唯一的 返回值。
-
函数返回值的类型就是函数的类型。
-
return语句可以是一个表达式,函数先计算表达式后再返 回值
-
return语句还可以终止函数,并将控制返回到主调函数
-
return 语句之后的代码是不能执行的代码
-
一个函数中可以有一个以上的return语句,执行到哪一个return语句,哪一个语句起作用
例:
int add ( int a, int b)
{
return (a+b);
}
int max ( int a, int b)
{
if (x>y)
return x ;
else return y;
}