C 语言用户自定义函数进阶:原型、调用、参数传递与返回值
C 语言用户自定义函数进阶
本教程通过清晰示例,讲解 C 语言用户自定义函数的创建、原型声明、调用、参数传递与返回值机制。
什么是函数?
函数是执行特定任务的自包含代码块。C 允许定义用户自定义函数,封装可复用逻辑。
示例场景
假设需创建圆并按半径与颜色着色。可用两个用户自定义函数:
createCircle()color()
示例:两整数相加
下面程序用自定义 addNumbers() 函数实现两整数相加。
#include <stdio.h>
int addNumbers(int a, int b); // 函数原型
int main(void) {
int n1, n2, sum;
printf("Enter two numbers: ");
scanf("%d %d", &n1, &n2);
sum = addNumbers(n1, n2); // 函数调用
printf("sum = %d\n", sum);
return 0;
}
int addNumbers(int a, int b) // 函数定义
{
int result = a + b;
return result; // 返回语句
}
函数原型
函数原型声明函数名、返回类型、参数,告知编译器函数存在,不含函数体。
语法
returnType functionName(type1 argument1, type2 argument2, ...);
示例中 int addNumbers(int a, int b); 告知编译器 addNumbers 返回 int、接受两个 int 参数。
若用户自定义函数定义在 main() 之前,原型可省略。
函数调用
通过传入实参将控制权转移给函数。
语法
functionName(argument1, argument2, ...);
示例中 addNumbers(n1, n2); 将 n1、n2 值传给函数。
函数定义
定义包含调用时实际执行的代码。
语法
returnType functionName(type1 argument1, type2 argument2, ...) {
// 函数体
}
调用 addNumbers 时,编译器跳转至此块,执行加法并返回结果。
参数传递
实参是调用时提供的实际值,形参接收这些值。
实参类型必须与形参类型匹配,否则编译报错。如 n1 为 char,对应形参 a 也须为 char。
函数也可无参数调用。
返回语句
return 终止函数并可选返回值给调用者。
语法
return expression;
示例中 return result; 将和返回 main(),存入 sum。
返回类型须与函数声明返回类型一致。
深入了解参数传递与返回值,请 探索 C 高级函数概念。
C语言