亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C 语言函数详解:定义、声明、调用与参数传递

函数是一组共同完成任务的语句。每个 C 程序至少有一个函数 main(),简单程序可定义额外函数。

可将代码分割到不同函数。如何分割由你决定,但逻辑上每个函数应执行特定任务。

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

C 标准库提供许多内置函数,如 strcat() 连接字符串、memcpy() 复制内存等。

函数也称为方法、子程序或过程等。

定义函数

C 语言函数定义通用形式:

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

函数定义包含函数头和函数体。函数各部分:

示例

下面是 max() 函数源码,接受两个参数 num1、num2 返回最大值:

 /* function returning the max between two numbers */ int max(int num1, int num2) { /* local variable declaration */ int result; if (num1 > num2) result = num1; else result = num2; return result; } 

函数声明

函数声明告知编译器函数名及调用方式。函数实际主体可单独定义。

函数声明包含:

 return_type function_name( parameter list ); 

上述 max() 函数声明为:

 int max(int num1, int num2); 

参数名在声明中不重要,只需类型,故以下也合法:

 int max(int, int); 

当在一个源文件定义函数而在另一文件调用时需要函数声明。此时应在调用文件顶部声明函数。

调用函数

创建 C 函数时定义其功能。使用函数需调用它执行既定任务。

程序调用函数时,控制权转移到被调函数。被调函数执行任务,遇到 return 语句或函数结束右括号时将控制权返回主程序。

调用函数只需传递所需参数及函数名,若函数返回值可存储返回值。例如:

Live Demo

 #include <stdio.h> /* function declaration */ int max(int num1, int num2); int main () { /* local variable definition */ int a = 100; int b = 200; int ret; /* calling a function to get max value */ ret = max(a, b); printf( "Max value is : %d\n", ret ); return 0; } /* function returning the max between two numbers */ int max(int num1, int num2) { /* local variable declaration */ int result; if (num1 > num2) result = num1; else result = num2; return result; } 

将 max() 与 main() 放一起编译运行,输出:

 Max value is : 200 

函数参数

若函数使用参数,必须声明接受实参值的变量,称为函数的形式参数。

形式参数在函数内表现为局部变量,进入函数时创建,退出时销毁。

调用函数时,实参传递方式有两种:

序号调用类型及说明
1值传递

将实参实际值复制给函数形式参数。函数内修改参数不影响实参。

2引用传递

将实参地址复制给形式参数。函数内通过地址访问实参,修改参数会影响实参。

C 语言默认使用值传递。通常意味着函数内代码不能改变调用时使用的实参。

C语言

  1. C 语言用户自定义函数四大模式对比:参数与返回值的设计权衡
  2. C语言中将一维与二维数组传递给函数的实战指南
  3. 精通C标准库函数:实战指南
  4. C 语言位域:高效内存使用的实战技巧
  5. C 语言文件 I/O 实战:创建、打开、读写与二进制操作
  6. C 语言可变参数详解:stdarg.h 实战指南
  7. C++多态实战指南:虚函数、动态绑定与纯虚函数
  8. C# 方法完全指南:定义、调用、递归与参数传递
  9. 深入理解 C# 委托:函数引用与事件的完整指南
  10. 掌握Verilog函数:高效RTL设计的复用利器
  11. MATLAB 函数详解:定义、工作区、输入输出与多种函数类型
  12. 精通 Python Lambda 函数:实用示例与最佳实践