C 语言函数调用的 4 种方法122


在 C 语言中,函数调用是将控制权从一个函数转移到另一个函数的过程。函数调用允许我们重用代码,组织程序并提高可读性。C 语言提供了 4 种不同的函数调用方法,每种方法都有其独特的优点和缺点。

1. 通过值调用

通过值调用是函数调用的传统方法,其中函数的参数传递给被调用函数的局部副本。对这些局部副本所做的任何修改都不会影响调用函数中的原始值。这是最简单的函数调用类型,并且在大多数情况下都能很好地工作。```c
void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int x = 5;
int y = 10;
swap(x, y); // 传递值的副本
printf("x = %d, y = %d", x, y); // 输出:x = 5, y = 10
return 0;
}
```

2. 通过引用调用

通过引用调用类似于通过值调用,但函数参数的地址传递给被调用函数。这允许被调用函数直接修改调用函数中的原始值。与通过值调用相比,通过引用调用效率更高,特别是在传递大型数据结构时。```c
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 5;
int y = 10;
swap(&x, &y); // 传递值的地址
printf("x = %d, y = %d", x, y); // 输出:x = 10, y = 5
return 0;
}
```

3. 可变参数调用

可变参数调用允许函数接受任意数量的参数。这对于需要处理未知数量输入的数据或创建通用的库函数非常有用。```c
void sum_numbers(int count, ...) {
int sum = 0;
va_list args;
va_start(args, count); // 初始化可变参数列表
for (int i = 0; i < count; i++) {
sum += va_arg(args, int); // 获取可变参数
}
va_end(args); // 清理可变参数列表
printf("Sum of numbers: %d", sum);
}
int main() {
sum_numbers(3, 10, 20, 30); // 输出:Sum of numbers: 60
return 0;
}
```

4. 回调函数

回调函数是一种在另一个函数中作为参数传递的函数。当主函数需要被调用函数在某个特定时刻执行某个操作时,回调函数非常有用。```c
void sort_array(int *array, int size, int (*compare)(int, int)) {
// 使用比较函数对数组排序
for (int i = 0; i < size - 1; i++) {
for (int j = i + 1; j < size; j++) {
if (compare(array[i], array[j]) > 0) {
// 交换元素
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
}
int compare_asc(int a, int b) {
return a - b;
}
int main() {
int array[] = {5, 3, 1, 2, 4};
int size = sizeof(array) / sizeof(array[0]);
sort_array(array, size, compare_asc);
// 输出排序后的数组
for (int i = 0; i < size; i++) {
printf("%d ", array[i]);
}
return 0;
}
```

2024-11-09


上一篇:C 语言函数的组成

下一篇:C 语言中的开方函数