C 语言 传值方式调用函数
传值调用 就是把参数的实际值复制给函数的形式传递参数。在这种情况下,修改函数内的形式参数不会影响实际参数。
默认情况下,C 语言使用 传值调用 方法来传递参数。
一般来说,这意味着函数内的代码不会改变用于调用函数的实际参数。
我们先定义一个 swap
函数。
/** * swap 函数用来交换两个变量的值 */ void swap(int a, int b) { int temp; printf("在 swap 中,交换前的变量为 a=%2d, b=%2d\n", a, b ); temp = a; /* 保存 a 的值 */ a = b; /* 把 b 赋值给 a */ b = temp; /* 把 temp 赋值给 a */ printf("在 swap 中,交换后的变量为 a=%2d, b=%2d\n", a, b ); return; }
接下来,让我们通过传递实际参数来调用函数 swap()
int main () { //定义两个整形变量 a, b /* 局部变量定义 */ int a = 7; int b = 17; printf("交换前的变量为 a=%2d, b=%2d\n", a, b); /* 调用函数来交换值 */ swap(a, b); printf("交换后的变量为 a=%2d, b=%2d\n", a, b); return 0; }
全部代码如下
/** * file: main.c * author: 简单教程(www.twle.cn) */ #include <stdio.h> /* swap 函数声明 */ void swap(int x, int y); int main () { //定义两个整形变量 a, b /* 局部变量定义 */ int a = 7; int b = 17; printf("交换前的变量为 a=%2d, b=%2d\n", a, b); /* 调用函数来交换值 */ swap(a, b); printf("交换后的变量为 a=%2d, b=%2d\n", a, b); return 0; } /** * swap 函数用来交换两个变量的值 */ void swap(int a, int b) { int temp; printf("在 swap 中,交换前的变量为 a=%2d, b=%2d\n", a, b ); temp = a; /* 保存 a 的值 */ a = b; /* 把 b 赋值给 a */ b = temp; /* 把 temp 赋值给 a */ printf("在 swap 中,交换后的变量为 a=%2d, b=%2d\n", a, b ); return; }
编译和运行上面的代码,输出结果如下:
$ gcc main.c && a.out 交换前的变量为 a= 7, b=17 在 swap 中,交换前的变量为 a= 7, b=17 在 swap 中,交换后的变量为 a=17, b= 7 交换后的变量为 a= 7, b=17
我们看到即使 swap
函数内部改变了 a
和 b
的值,但是实际上 a 和 b 的值没有发生变化。