C-函数

时间:2020-02-23 14:31:56  来源:igfitidea点击:

在本教程中,我们将学习C编程语言中的函数。

什么是函数?

C语言中的函数是由一些执行特定任务的语句组成的代码块。

例如,我们可以有一个greetings()函数,该函数将在调用时打印问候消息。

函数类型

C语言中有两种类型的函数。

  • 库函数
  • 用户定义函数

库函数

这些是我们从C库获得的功能,例如strlen()concat()等。

用户定义函数

这些是用户创建的功能,例如" greetings()"或者" displayResult()"等。

main()函数是用户定义的函数,而printf()和scanf()是库函数。

库函数和用户定义函数之间的区别

库函数已经创建并且可以使用了,我们不必编写它。
而用户定义函数是我们必须编写才能使用的函数。

为什么我们需要用户定义的函数?

用户定义的函数可帮助我们将程序分为子程序。
这些子程序旨在执行特定任务,因此使代码更易于开发,测试和调试。

想法是将程序分解为模块(子程序),并以小块形式开发程序,然后将它们组合在一起以解决问题。

例如,如果我们有一个程序来查找矩形的区域,那么我们可以在main()函数中编写整个代码。
或者我们可以使用诸如findArea()之类的功能将程序划分为子程序。
这将有助于我们轻松地开发代码,并在发生任何错误的情况下也有助于测试和调试。

用户定义函数的三个部分

用户定义的功能包括三个部分。

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

函数声明

像变量一样,在C语言中,我们必须在调用函数之前先声明一个函数。

函数声明也称为函数原型,它由以下4部分组成。

  • 返回类型
  • 函数名称
  • 参数列表
  • 终止分号

在下面的示例中,我们声明一个名为" findArea"的函数,其返回类型为" float",并且该函数带有两个参数" length"和" width",类型为" float"。

float findArea(float length, float width);

返回类型

返回类型告诉我们该函数返回的值的类型。

如果一个函数要返回一个整数值,那么返回类型将被设置为" int"。

如果函数不返回任何值,则将返回类型设置为" void"。

函数名称

函数的名称可以是任何有效的标识符,例如display(),result()等。

不要使用保留关键字来命名函数。

参数列表

参数列表必须用逗号分隔。

如果函数不带参数,则将其设置为" void"。

在下面的示例中,greetings()函数不带参数,不返回任何值。

void greetings(void);

参数名称是可选的,可以在函数声明中忽略。

在下面的示例中,我们没有编写参数名称。

float findArea(float, float);

函数声明和函数定义中的参数名称不必相同。

终止分号

终止分号";"标志着函数声明的结束。

函数定义

这是我们实现函数的部分。
函数定义也称为函数实现。

函数定义由6个部分组成,其中三个部分位于函数标题下,而三个则位于函数主体下。

  • 函数标题

返回类型

  • 函数名称
  • 参数列表
  • 函数体

局部变量声明

  • 函数陈述
  • 返回值声明

函数标题

函数定义中的返回类型必须与函数声明中的返回类型匹配。
我们已经知道,返回类型告诉我们该函数返回的值的类型。

函数定义中的函数名称与函数声明部分中的函数名称相同。

函数定义中的参数列表由实际的参数名称组成,不必与函数声明中的参数名称匹配。

函数体

这是函数的主体。
我们可以在体内声明局部变量,该局部变量只能在函数内部访问。

然后,我们可以使用其他函数语句在函数内部执行某些任务。

最后,如果函数返回任何值,我们可以使用return语句。
因此,return语句是可选的。

在以下示例中,我们实现了我们在本教程前面声明的findArea()函数。

float findArea(float length, float width) {
  //variable declaration
  float area;

  //function statement
  area = length * width;

  //return statement
  return area;
}

函数调用

这是我们调用或者调用函数的部分。

要调用一个函数,我们写出函数的名称和括号,并在函数需要时传递参数列表。

在下面的示例中,我们调用findArea函数并传递两个值。

findArea(10, 20);

用C编写程序以查找矩形的面积

在下面的代码中,我们使用函数将程序分为子程序。

/**
 * file: rectangle-area.c
 * date: 2011-11-02
 * description: rectangle-area program
 */

#include <stdio.h>

//function declaration
float findArea(float length, float width);

int main(void)
{
  //variable
  float length, width, area;
  
  //input
  printf("Enter length: ");
  scanf("%f", &length);
  printf("Enter width: ");
  scanf("%f", &width);
  
  //function call
  area = findArea(length, width);
  
  //output
  printf("Area: %f\n", area);

  printf("End of code\n");
  return 0;
}

//function definition
float findArea(float length, float width) {
  //local variable
  float area;
  
  //function statement
  area = length * width;
  
  //return statement
  return area;
}
Enter length: 10
Enter width: 20
Area: 200.000000
End of code