20 函数之参数传递

在 C 语言中,函数是组织代码的基本单位,通过它我们能够实现特定的功能。上篇我们讨论了函数的定义与调用,而本篇将专注于函数的参数传递。我们将介绍参数的类型、传递方式以及一些实际应用案例。

参数的类型

在 C 语言中,函数的参数可以被声明为基本数据类型,如 intfloatchar 以及用户自定义的数据类型(如 struct),也可以是指向复杂数据结构的指针。

1. 基本数据类型参数

当函数参数是基本数据类型时,传递的是值的拷贝。即在函数内对参数的修改不会影响到调用函数时传入的参数。

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>

void updateValue(int x) {
x = x + 10; // 仅在函数内部改变了 x 的值
printf("Inside updateValue: %d\n", x);
}

int main() {
int num = 5;
updateValue(num);
printf("In main: %d\n", num); // num 的值仍然是 5
return 0;
}

在上面的例子中,updateValue 函数接收一个整数参数 x,并在函数内修改了 x 的值。但是,main 函数中的 num 变量保持不变。

2. 指针参数

为了在函数内部修改传入参数的值,通常使用指针将变量的地址传递给函数。这种方式称为引用传递

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>

void updateValue(int *x) {
*x = *x + 10; // 通过指针修改了原始变量的值
printf("Inside updateValue: %d\n", *x);
}

int main() {
int num = 5;
updateValue(&num); // 传递 num 的地址
printf("In main: %d\n", num); // num 的值现在变为 15
return 0;
}

在这个例子中,updateValue 函数接收一个 int 类型的指针。当我们传递 num 的地址时,updateValue 函数可以修改 num 的值,从而影响到 main 函数中的变量。

3. 数组参数

数组在 C 语言中是以指针的形式传递的。当你传递一个数组到函数时,实际上是传递了指向数组首元素的指针。因此,操作数组的函数也可以直接修改原始数组的内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>

void updateArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
arr[i] += 1; // 修改数组中的每个元素
}
}

int main() {
int arr[3] = {1, 2, 3};
updateArray(arr, 3); // 直接传递数组
for (int i = 0; i < 3; i++) {
printf("%d ", arr[i]); // 输出为 2 3 4
}
return 0;
}

在这个示例中,updateArray 函数接受一个数组参数和数组的大小,可以直接在函数内修改数组的值。

总结

在 C 语言中,函数的参数传递方式影响着函数内部对参数的操作行为。我们可以通过值传递(基本数据类型)和引用传递(指针)来控制参数的使用。使用指针和数组参数不仅高效,而且可以让函数对外部变量或数据结构进行修改。

下篇文章我们将讨论函数的返回值,进一步探索函数如何将结果返回给调用者。

20 函数之参数传递

https://zglg.work/cplusplus-zero/20/

作者

IT教程网(郭震)

发布于

2024-08-10

更新于

2024-08-10

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论