Menu Close

C语言 – 函数定义

1.什么是C语言的函数?

C语言编程中的函数是可重复使用的代码块,使程序更易于理解,测试,并且可以在不更改调用程序的情况下轻松进行修改。

函数对代码进行划分,并对程序进行模块化,以获得更好,更有效的结果。 简而言之,将较大的程序分为各种各样的子程序。

main函数及函数
main函数及函数

这些子程序称为函数。函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。

您可以把代码划分到不同的函数中。每个函数执行一个特定的任务来进行的。

函数声明告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实际主体。

C 标准库提供了大量的程序可以调用的内置函数。例如,函数 strcat() 用来连接两个字符串,函数 memcpy() 用来复制内存到另一个位置。

将大块的程序划分为各个小函数时,可以轻松地分别管理每个函数。 每当程序中发生错误时,您都可以轻松研究故障函数并仅仅更正该函数内的那些错误。

您也可以在需要时轻松调用和使用函数,从而自动节省时间和空间。

2. C语言的函数类型

一是库函数,二是用户自定义函数。库函数和用户定义函数之间的区别在于,我们不需要为库函数编写代码。 它已经存在于头文件中,我们始终将其包含在程序的开头。

您只需要键入函数的名称,然后将其与正确的语法一起使用即可。 Printf,scanf是库函数的示例。

用户定义的函数必须由用户自己编写函数的主体,并在需要函数的时候执行某些操作调用该函数。

用户定义的函数始终由用户编写,但以后可以成为用户本身项目的库函数的一部分。

这是“ C”编程的主要优点。

3. 用户自定义函数

在C语言中,编程时函数的应用共分为三个部分,例如,

  • 函数声明;
  • 定义函数;
  • 函数调用

函数声明是指编写程序的名称。 函数声明会告诉编译器函数名称及如何调用函数。

当您在一个源文件中定义函数且在另一个文件中调用函数时,函数声明是必需的。

在函数声明中,我们仅指定要在程序中使用的函数名称和类型;该声明和变量声明一样。

除非在程序中声明了函数,否则我们无法使用它。 函数声明也称为“函数原型”。

1. 无参函数的定义形式

语法

return_data_type function_name ();
类型标识符 函数名( )
{
   声明部分
   语句
}
  • return_data_type: 函数的数据类型, 该类型和调用语句所需要的值的数据类型是一样的;
  • function_name: 函数名,后面是小括号。

当您在一个源文件中定义函数且在另一个文件中调用函数时,函数声明是必需的。在调用函数的文件顶部声明函数。

请记住,函数不一定返回值。 在这种情况下,将使用关键字void。例如,output_message函数声明该函数未返回值, 就可以使用:void output_message();

我们可以改写一个函数定义:

void Hello()
{
   printf ("Hello,world \n");
}

这里,只有 main函数调用 Hello函数,即可以打印出Hello,word 字符串。Hello 函数是一个无参函数,当该函数被其它函数调用时,也会输出 Hello world 字符串。

2. 有参函数定义的一般形式

return_type function_name( parameter list )
{
   body of the function
}

类型标识符 函数名(形式参数表列)
{
   声明部分
   语句
}

4. 用户自定义函数的构成

在 C 语言中,函数由一个函数头和一个函数主体组成。

有返回值函数,有参函数,用户自定义函数
有返回值函数,有参函数,用户自定义函数

下面列出一个函数的所有组成部分:

返回类型:一个函数可以返回一个值。return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字 void。
函数名称:这是函数的实际名称。函数名和参数列表一起构成了函数签名。
参数:参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数(实参,Arguments)。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。
函数主体:函数主体包含一组定义函数执行任务的语句。

函数定义意味着只编写函数的主体。 函数的主体由要有执行特定任务的语句组成。 函数主体由一个或一个语句块组成。 它也是函数的必需部分。有参函数比无参函数多了一个内容,即形式参数表列。在形参表中给出的参数称为形式参数,它们可以是各种类型的变量,各参数之间用逗号间隔。在进行函数调用时,主调函数将赋予这些形式参数实际的值。形参既然是变量,必须在形参表中给出形参的类型说明。

5.用户自定义函数如何调用

main函数及函数
main函数及函数

C 程序的执行从 main() 函数开始。

当编译器遇到 functionName(); 时,程序的控制跳转到

void functionName();

并且,编译器开始执行 functionName() 中的代码。

一旦函数定义中的代码被执行,程序的控制就会跳回到 main() 函数。

请注意,函数名称是标识符,应该是唯一的。

更详细的用户自定义函数的使用,请看这一页

6.如何设计自定义函数?

定义一个函数,用于求两个数中的大数,可写为:

int max (int a, int b)
{
   if (a>b) return a;
   else return b;
}

第一行说明 max 函数是一个整型函数,其返回的函数值是一个整数。形参为 a,b,均为整型变量。a,b 的具体值是由主调函数在调用时传送过来的。

在{ }中的函数体内,除形参外没有使用其它变量,因此只有语句而没有声明部分。在 max 函数体中的 return 语句是把 a(或b)的值作为函数的值返回给主调函数。有返回值函数中至少应有一个 return 语句。

在C程序中,一个函数的定义可以放在任意位置,既可放在主函数 main 之前,也可放在 main 之后。

例如:

可把 max 函数置在 main 之后,也可以把它放在 main 之前。

例6.1.求两个整数的最大值

int max(int a,int b)
{
    if(a>b)return a;
    else return b;
}

main()
{
    int max(int a,int b);
    int x,y,z;
    printf("input two numbers:\n");
   scanf("%d%d",&x,&y);
   z=max(x,y);
   printf("maxmum=%d",z);
}

例6.2. 求两个整数的最大值 (函数在main函数之后,需要在main函数之前需要函数声明)

int add (int a,int b);
int x,y,z;

main()
{

   printf("input two numbers:\n");
   scanf("%d%d",&x,&y);
   z=add(x,y);
   printf("sum of two numbers=%d",z);
}

int add(int a,int b) //function body
{
   int c;
   c=a+b;
   return c;
}

除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Leave the field below empty!

Posted in C语言教程

Related Posts