C 语言函数参数
在C语言中,函数是程序的基本构建块之一。函数参数是函数定义和调用时传递的数据,它们使得函数能够处理不同的输入并返回相应的结果。理解函数参数的概念对于编写灵活且可重用的代码至关重要。
什么是函数参数?
函数参数是传递给函数的值或变量,用于在函数内部执行操作。参数可以是基本数据类型(如 int
、float
、char
等),也可以是复杂的数据结构(如数组、指针、结构体等)。函数参数分为两种类型:
- 形式参数(Formal Parameters):在函数定义中声明的参数。
- 实际参数(Actual Parameters):在函数调用时传递给函数的具体值或变量。
函数参数的基本用法
1. 值传递
在C语言中,默认情况下,函数参数是通过值传递的。这意味着函数接收的是实际参数的副本,而不是实际参数本身。因此,函数内部对参数的修改不会影响原始数据。
c
#include <stdio.h>
void increment(int num) {
num++;
printf("Inside function: %d\n", num);
}
int main() {
int num = 5;
increment(num);
printf("Outside function: %d\n", num);
return 0;
}
输出:
Inside function: 6
Outside function: 5
在这个例子中,increment
函数接收 num
的副本,并在函数内部对其进行修改。然而,原始变量 num
的值在函数外部保持不变。
2. 引用传递
虽然C语言不支持直接的引用传递,但可以通过指针来实现类似的效果。通过传递变量的地址,函数可以修改原始数据。
c
#include <stdio.h>
void increment(int *num) {
(*num)++;
printf("Inside function: %d\n", *num);
}
int main() {
int num = 5;
increment(&num);
printf("Outside function: %d\n", num);
return 0;
}
输出:
Inside function: 6
Outside function: 6
在这个例子中,increment
函数接收 num
的地址,并通过指针修改了原始变量的值。
实际应用场景
1. 交换两个变量的值
交换两个变量的值是函数参数的一个常见应用场景。通过传递指针,函数可以修改原始变量的值。
c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 10, y = 20;
printf("Before swap: x = %d, y = %d\n", x, y);
swap(&x, &y);
printf("After swap: x = %d, y = %d\n", x, y);
return 0;
}
输出:
Before swap: x = 10, y = 20
After swap: x = 20, y = 10
2. 计算数组的平均值
通过传递数组和数组大小作为参数,函数可以计算数组的平均值。
c
#include <stdio.h>
float average(int arr[], int size) {
int sum = 0;
for (int i = 0; i < size; i++) {
sum += arr[i];
}
return (float)sum / size;
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);
printf("Average: %.2f\n", average(arr, size));
return 0;
}
输出:
Average: 3.00
总结
函数参数是C语言中非常重要的概念,它们使得函数能够处理不同的输入并返回相应的结果。通过值传递和引用传递(通过指针),函数可以灵活地操作数据。理解并掌握函数参数的用法,对于编写高效、可重用的代码至关重要。
附加资源与练习
- 练习1:编写一个函数,接收两个整数作为参数,并返回它们的最大公约数(GCD)。
- 练习2:编写一个函数,接收一个字符串作为参数,并返回字符串的长度。
- 练习3:编写一个函数,接收一个整数数组和数组大小作为参数,并返回数组中的最大值。
通过完成这些练习,你将进一步巩固对C语言函数参数的理解和应用能力。