首页 > 代码库 > C语言攻略指南(四)函数篇
C语言攻略指南(四)函数篇
其实在开始篇中第一个程序 Hello World,就已经使用了函数,输出的 printf 函数,封装这一系列操作的 main 函数。C语言程序是由一个个函数组合而成,这是C语言模块化的表现。所谓的模块化就是将复杂的任务分割成若干个小任务,每个小任务就是一个模块, 先分别实现各个模块,而后实现最终目标。这种模块化的思想,将程序的复杂度降低,逻辑更加清晰。
函数的定义
返回值类型 函数名(参数) { 函数体 }
返回值类型:一个函数可以有返回值,也可以无返回值,有返回值需要说明返回值的类型是 int 还是其它类型,无返回值写 void。
函数名:该函数的名称。
参数:可以有参数也可以无参数。该参数为形式参数,向该参数传递的值为实际参数。
函数体:包含声明和语句。
实例:
/* hello()函数,打印 Hello World! ,无参数无返回值 */ void hello() { printf("Hello World! \n"); return; }
/* 返回值大的那个数 */ int max(int a, int b) { int c = a>b ? a:b ; return c; }
函数的声明
函数声明会告诉编译器函数名称及如何调用函数。
返回值类型 函数名(参数);
int max(int a, int b);
在函数的声明中参数类型是必须的,参数名称可以省略。
#include <stdio.h> int max(int, int); int main() { int Max; Max = max(7,4) ; printf(" Max为 %d \n", Max); return 0; } int max(int a, int b) { int c = a>b ? a:b ; return c; }
函数定义在 main( ) 函数(主函数)前无需写声明,定义在 main( )函数后,或者其它的源文件中,需要在 main( ) 之前写声明。
内部函数和外部函数
内部函数:
在一个源文件中定义的函数只能被该文件中的函数调用,而不能同一程序中其它文件中的函数调用。
static 返回值类型 函数名(参数)
对于只需要在一个源文件中使用的函数,把它定义为内部函数,不用担心与其它文件中函数同名的影响。
外部函数:
可以被同一个源文件中的函数调用,又可以被同一程序其它文件中的函数调用。
extern 返回值类型 函数名(参数)
C语言中,定义函数不写 extern,默认为外部函数。调用外部函数,需先写该函数的声明。
函数的调用
一旦调用函数,程序就会从调用语句那里直接跳转到函数的定义语句的地方执行,直到从该函数返回为止。
#include <stdio.h> extern int max(int a, int b); extern void hello(); int main() { int Max; Max = max(7,4) ; printf(" Max为 %d \n", Max); hello(); return 0; }
#include <stdio.h> extern void hello() { printf("Hello World! \n"); return; }
#include <stdio.h> extern int max(int a, int b) { int c = a>b ? a:b ; return c; }
多个源文件需要一起编译
C:\Users\flamen\GNU>gcc file.c hello.c max.c -o file.exe C:\Users\flamen\GNU>file.exe Max为 7 Hello World!
C语言攻略指南(四)函数篇