C 语言函数

函数是一组一起执行一个任务的语句块。

每个 C 程序都至少有一个函数,即主函数 main()

我们还可以自己定义其他额外的函数。

划分代码到函数中

我们可以把代码划分到不同的函数中,这样可以使得代码可读性更强,逻辑更简单。

虽然划分代码到不同的函数中没有一个统一的规范,但实践证明,在逻辑上,划分的标准是每个函数执行一个特定的任务的。

函数

函数的声明和定义:

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

当然了,我们可以把函数的声明和定义放在一起,因为,函数只有一条规则:

 调用函数前,函数必须被声明,是否被定义则是没要求的。

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

函数还有很多叫法: 方法子例程程序 等等。

定义函数

C 语言中的函数定义的一般语法格式如下:

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

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

一个函数至少由以下几部分组成:

  • return_type返回类型,一个函数可以返回一个值。 return_type 是函数返回的值的数据类型。 有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字 void

  • 函数名称: 这是函数的实际名称。函数名和参数列表一起构成了函数签名。

  • 参数: 参数就像是占位符。 当函数被调用时,您向参数传递一个值,这个值被称为实际参数。 参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。

  • 函数主体: 函数主体包含一组定义函数执行任务的语句。

范例: C 语言函数定义语法说明

我们来声明和定义一个名为 max 的函数,它有两个 int 类型的参数 num1num2

这个 max 函数会返回两个参数中比较大的那个,所以,返回值类型为 int

/**
 * file: main.c
 * author: 简单教程(www.twle.cn)
 */

#include <stdio.h>


// 声明 max 函数
int max(int num1,int num2);


int main ()
{
   return 0;
}

// 定义 max 函数
int max(int num1,int num2) 
{
   // 使用三元运算符
   return num1 - num2 > 0 ? num1 : num2;
}

函数声明

函数 声明 是告诉编译器和开发者函数的名称及如何调用函数。

函数的实际主体可以单独定义。

函数声明包括以下几个部分:

return_type function_name( parameter list );

针对上面定义的函数 max(),以下是函数声明:

int max(int num1, int num2);

在函数声明中,参数的名称并不重要,只有参数的类型是必需的,

因此下面也是有效的声明:

int max(int, int);

当我们在一个源文件中定义函数且在另一个文件中调用函数时,函数声明是必需的。 在这种情况下,我们应该在调用函数的文件顶部声明函数。

调用函数

如果声明一个函数,同时也定义了一个函数,那么接下来就是要调用这个函数完成一个任务。

创建 C 函数时,会定义函数做什么,然后通过调用函数来完成已定义的任务。

当程序调用函数时,程序控制权会转移给被调用的函数。

被调用的函数执行已定义的任务,当函数的返回语句被执行时,或到达函数的结束括号时,会把程序控制权交还给主程序。

调用函数时,传递所需参数,如果函数返回一个值,则可以存储返回值。

范例: 声明,定义,调用函数

/**
 * file: main.c
 * author: 简单教程(www.twle.cn)
 */


#include <stdio.h>


// 声明 max 函数
int max(int num1,int num2);


int main ()
{
   int a = 17;
   int b = 5;
   int c;

   c = max(a,b);   //调用函数
   printf("%d 与 %d 中 %d 比较大\n",a, b, c);


   printf(" -1 与 1 中 %d 比较大\n",max(-1,1) ); //可以直接传递类型字面量给函数,函数的返回值也可以作为其它函数的参数

   return 0;
}

// 定义 max 函数
int max(int num1,int num2) 
{
   // 使用三元运算符
   return num1 - num2 > 0 ? num1 : num2;
}

编译和运行以上程序,输出结果如下

$ gcc main.c && a.out
17517 比较大
 -1 与 11 比较大

函数参数

如果函数要使用参数,则必须声明接受参数值的变量。这些变量称为函数的 形式参数

形式参数就像函数内的其他局部变量,在进入函数时被创建,退出函数时被销毁。

当调用函数时,有两种向函数传递参数的方式:

调用类型 描述
传值调用 该方法把参数的实际值复制给函数的形式参数。
在这种情况下,修改函数内的形式参数不会影响实际参数
引用调用 通过指针传递方式,形参为指向实参地址的指针
当对形参的指向操作时,就相当于对实参本身进行的操作

默认情况下,C 使用 传值调用 来传递参数。

这意味着函数内的代码不能改变用于调用函数的实际参数。

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.