一、函数分类
按照来源分:库函数和自定义函数
按照返回值分:有返回值和无返回值函数。
根据函数能否被其他文件调用分:内部函数和外部函数。
二、定义函数
C函数的模版如下:
内外修饰符 返回类型 函数名(参数列表){
函数体
}
内外修饰符:非必须,static、extern
返回类型:void或其他
函数名:合法的标示符即可
参数列表:非必须,见多了,就那样,可以为数组,也可以为指针等等,参数表可以为空,也可以为void,两者是相同的。
函数体:C语句的集合,非必须。
C中没有抽象函数一说,都很实在。
三、函数的返回类型与返回值
函数不返回,则定义为void,否则为一个具体类型。
如果函数不返回,void类型,则不能使用return语句,java中可以。
如果函数有返回值,则必须使用return语句。
四、main函数
在前面已经说过了,就是入口函数,一个c程序只能有一个main函数,C99中有两种定义方式。main必须有int返回值。
main函数还可以有参数列表,也可以没有。
五、函数的执行过程
从上到下顺序执行,当调用别的函数了,就执行别的函数,直到完成后回来接着继续执行。这是单线程方式,和java的单线程方法执行方式完全相同。
六、函数原型
C语言有这个概念,比如说,在一个c文件中有两个方法,一个f()和一个main(),当f()在main()之后定义时,在main前面需要做个原型声明,表示用到这个函数了。
比如:
#include <stdio.h>
void f();
int main(){
....
}
void f(){
....
}
void f();
int main(){
....
}
void f(){
....
}
其中 void f();就是函数原型。在此叫声明。
七、形参实参,调用方式
与java完全一样。
可嵌套、可递归。
八、内部、外部函数
1、内部函数:只能被本c文件内的函数调用。前面加static关键字,也称为静态函数。
2、外部函数:在程序的所有文件中都可以调用。前面加 extern关键字,如果函数前面没有内外部的限制关键字,则默认为外部函数。
3、如果要在一个文件函数a()中调用另外一个文件的函数b(),则需要在a中通过extern关键字来声明函数原型。
在a所在的整个文件中都可以访问b函数:
extern
void b()
void a(){
...
}
void a(){
...
}
只有在a中可以访问b函数:
void a(){
extern void b()
...
}
extern void b()
...
}
这有点类似java的import。
本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/187735,如需转载请自行联系原作者