函数

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

函数

C语言实际上是一种函数式语言,一个C语言源程序由一个main函数和其他函数组成。函数本质上是一段程序,用于完成某个特定的功能。除了主函数(main函数)外,其他函数均不能独立运行。使用函数之前要先定义函数,使用函数称为函数的调用。

1.函数的分类

(1)从用户使用的角度

标准函数:即库函数,例如printf函数、scanf函数;

用户函数:程序员在程序中定义的函数;

(2)从函数的形式来看

无参函数:主调函数并不将数据传送给被调用函数;

有参函数:在主调函数和被调函数之间有数据传递;

(3)从函数的作用范围来看

外部函数:允许其他文件中的函数调用;

内部函数:只限于本文件的其他函数调用它;

2.函数的定义

函数要先定义后使用,函数定义的一般格式:

函数类型函数名(形式参数表)

{

声明部分

执行部分

}

说明:

(1)函数类型:说明了函数返回值的类型,返回值为int型的函数定义时可以省略函数类型,即int为函数的默认类型;如果为void,则表示无返回值。

(2)函数名:遵循变量的命名规则,在同一个程序中,函数名必须唯一。

(3)形式参数表:可以为空,也可为多个参数,不管参数是否为空,圆括号都不能省略,形参必须说明其类型,且只能在本函数内部使用。

(4)函数体:分为说明部分和执行部分。说明部分包括变量的定义或所调用函数的声明,执行部分有执行语句组成。也可为空函数,即不产生任何操作。

(5)例如:float power(float x,int n)

{

int i;

float t=1;

for(i=1;i<=n;i++)

t=t*x;

return t;

}

3.函数的调用

(1)当一个函数需要使用某个函数的功能时,就可以调用该函数,函数调用的一般形式为:

函数名(实际参数表) //有参数的函数调用

函数名() //无参数的函数调用

(2)对于有参函数的调用,应注意以下几个问题:

1)在定义函数时,形参并不占用内存的存储单元,只有在被调用时才给形参变量

分配内存单元,在调用结束时,即刻释放所分配的内存单元。所以,形参是存在生命周期的;

2)实参和形参在数量上应严格一致,在类型上应相同或赋值兼容;

3)形参只能是变量,而实参可以是常量、变量或表达式。在函数调用时,实参必须有确定的值,以便把这些值传递给形参;

4)实参可以与形参同名,但是在内存在分配两个不同的存储单元。

4.函数的返回

两种方法可以终止函数运行并返回到调用它的函数中:

(1)执行到函数的最后一条语句后返回;

(2)执行到返回语句return时返回;return语句的格式为:

return 表达式;或者return(表达式);

说明:return 0/-1/1,一般情况下,0和-1或者0和1使用。

1)0和-1使用时:

return 0 //一般表示成功执行

return -1 //一般表示不成功

2)0和1使用时:

return 1 //真

return 0 //假

3)return; //可以跳出一个函数,过程。

5.参数的传递

在调用有参函数时,实参和形参之间要进行数据的传递,在C语言中,只能由实参单向传递给形参,而不能由形参传递回给实参,这种传递称值传递。

●调用函数时,先给形参分配独立的存储单元,再将实参的值一一赋值给对应的形参;

●在函数体中对形式参数的加工与实际参数已完全脱离关系;

●在执行被调函数时,形参的值可能发生改变,但调用结束后,形参单元被取消,而

实参单元仍保留维持原值,形参中的值将不回带到对应的实参中。

例如:swap函数实现两个变量的值进行交换。

#include

void swap(int a,int b)

{

int i;

printf("a=%d,b=%d\n",a,b);

i=a;

a=b;

b=i;

printf("a=%d,b=%d\n",a,b);

}

void main()

{

int x=6,y=9;

printf("x=%d,y=%d\n",x,y);

swap(x,y);

printf("x=%d,y=%d\n",x,y);

}

6.函数的声明

函数声明是对被调用函数的特征进行必要的说明,以此向编译系统提供函数名、函数类型、函数参数的个数和类型等必要的信息,以便编译系统对函数的调用进行检查。

(1)函数声明的位置

当在所有函数的外部被调用之前声明函数时,在函数声明的后面所有位置上都可以对该函数进行调用;

函数声明也可以放在调用函数内的声明部分,如在main函数内部进行声明,则只能在main函数内部才能识别该函数。

(2)函数声明的形式

函数声明是在函数首部加上分号即可,一般放在程序的最前面。其一般形式为:

函数类型函数名([形参类型[形参名1],形参类型[形参名2]….);

(3)函数声明与函数定义的关系主要体现在以下几个方面:

1)函数声明在程序的数据声明部分,函数定义的位置可以在调用它的函数之前,也可以在调用的函数之后,,甚至位于其他的源程序模块中;

2)函数定义位置在前,函数调用在后,或者函数类型为int和char时,可以不声明;

3)函数定义在调用它的函数之后或者函数在其他源程序模块中,且函数类型不是整型,则必须在函数调用之前,在本程序函数之外或本函数内的任意位置

声明该函数。

例如:求最大数和最小数的函数

#include

int maxmum(int x,int y,int z);

int minmum(int x,int y,int z);

void main()

{

int a,b,c,max,min;

scanf("%4d,%4d,%4d",&a,&b,&c);

max=maxmum(a,b,c);

printf("max=%d\n",max);

min=minmum(a,b,c);

printf("min=%d\n",min);

}

int maxmum(int x,int y,int z)

{

int max;

max=(x>y)?x:y;

max=(max>z)?max:z;

return(max);

}

int minmum(int x,int y,int z)

相关文档
最新文档