从上面两个例题可看出,一个函数是由函数说明部分和函数体构成的。
(1)函数说明部分
函数说明部分包括类型标识符、函数名、参数表及参数类型等。
①类型标识符:类型标识符用来定义函数的类型。函数的类型即是函数返回值的类型,希望函数返回什么类型的值就用该类型来说明函数。例如上例求最大值函数max()中,返回值是a和b两个数中的最大值,a和b都是整型,所以返回值也应是整型,因而用int来定义函数。
函数可以没有返回值,如果函数不需要返回值,可将函数定义为空类型void。需要注意的是,如果不需要函数返回值,而且也未将函数定义为空类型,有些编译系统在编译时会报蝥告错误。
②函数名:即函数定义时为函数所起的名字。当该函数被调用时,需要引用函数名。函数名的命名规则遵循C语言标识符的命名规则,同一个程序中函数名不能重名。
③参数表:参数表是写在函数名后面的括号“()”中的变量列表。参数表中包含一个或多个变量,每个变量前有声明其类型的类型标识符,每一个参数之间以逗号分隔。例如上例求最大值中:
int max (int a, int b)
参数表中有两个参数a和b,且都是整型。
对于无参函数,参数表是空的,但是函数名后面的“()”不可省略
(2)函数体
花括号“{}”括起的部分称为函数体。函数体是函数的语句执行部分,也由两部分组成:说明语句部分和可执行语句部分。
①说明语句:主要包括声明语句,声明变量、数组、指针、函数等。
②可执行语句部分:是完成函数功能的执行语句系列。注意如果函数有返回值,在执行语句部分需要出现return语句。return语句用来将函数的返回值带回给主调函数。
(3)函数定义不允许嵌套
在C语言中,所有函数包括主函数main()都是平行的。一个函数的定义,可以放在程序中的任意位置,主函数main()之前或之后。但在一个函数的函数体内,不能再定义另一个函数,即不能嵌套定义。如以下定义是错误的:
int oprdata(int a,int b)
{
int max(int x,int y) /* 试图在 optdata 中嵌入一个max.函数 */
{
return(x>y?x:y);
}
int min(int x.int y) /* 试图在 optdata 中嵌入一个min.函数 */
{
return (x<y?x:y);
}
}
(4)C语言允许定义空函数
空函数就是既无参数、函数体又为空的函数。其一般形式为:
[函数类型] 函数名(void)
{
}
例如:
void nothing()
{
}
nothing()函数就是一个空函数,当调用该函数时,什么也不做。空函数的意义可以是先占位,等程序功能扩展时加入具体有意义的内容。
已有 22658 名学员学习以下课程通过考试
最需教育客户端 软件问题一手掌握
去 App Store 免费下载 iOS 客户端
点击加载更多评论>>