函数与预处理(一)

一.概述

  1. 一个程序必须有且只有一个main( )函数,C++从main( ) 函数开始执行

  2. C++语言中,所有函数都是平行独立的,无主次、相互包含之分。函数可以嵌套调用,不可嵌套定义

  3. 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++要求在定义函数时必须指定函数的类型。

五.函数参数和函数的值

  1. 在定义函数时 形式参数和实际参数 函数名后面括号中的变量名称为 形式参数(formal parameter,简称形参)。
  • 形参是被调函数中的变量
  1. 在主调函数中调用一个函数时,函数名后面括 号中的参数(可以是一个表达式)称为实际参数 (actual parameter,简称实参)。
  • 实参是主调函数赋给被调函数的特定值。

  • 实参可以是常量、变量或复杂的表达式,不管是哪 种情况,在调用时实参必须是一个确定的值

函数与预处理(一)

注意:

  1. 在函数调用前,形参并不占内存的存储单元,只有在函 数开始调用时,形参才被分配内存单元。调用结束后,形 参所占用的内存单元被释放
  2. 实参可以是常量、变量或表达式,但要求有确定的值。
  3. 实参变量对形参变量的数据传递是"值传递",即单向传
    递,只由实参传给形参,而不能由形参传回来给实参。在
    内存中实参、形参分占不同的单元
  4. 实参与形参一一对应,类型应相同或赋值兼容
  5. 不同的函数中可以使用相同的变量名和形参名,他们是
    不同的变量。

六:函数的返回值

  1. 函数的返回值通过return语句获得。

  2. 函数只能有唯一的 返回值。

  3. 函数返回值的类型就是函数的类型。

  4. return语句可以是一个表达式,函数先计算表达式后再返 回值

  5. return语句还可以终止函数,并将控制返回到主调函数

  6. return 语句之后的代码是不能执行的代码

  7. 一个函数中可以有一个以上的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;
}