首页 > 代码库 > 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;
}
example

 

函数定义在 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;
}
file.c
技术分享
#include <stdio.h>

extern void hello()
{
    printf("Hello World! \n");

    return;
}    
hello.c
技术分享
#include <stdio.h>

extern int max(int a, int b)
{

    int c = a>b ? a:b ;

    return c;
}
max.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语言攻略指南(四)函数篇