C语言 按值函数调用

来源:这里教程网 时间:2026-02-16 12:53:21 作者:

C语言 按值函数调用是在 C 编程中调用函数的默认方式。在我们按值讨论函数调用之前,让我们理解在解释这个时我们将使用的术语:

实际参数:函数调用中出现的参数。
形式参数:函数声明中出现的参数。

例如:

#include <stdio.h>int sum(int a, int b){     int c=a+b;     return c;}int main({    int var1 =10;    int var2 = 20;    int var3 = sum(var1, var2);    printf("%d", var3);    return 0;}

在上面的例子中,变量a和b是形式参数。变量var1和var2是实际参数。实际参数也可以是值。像sum(10,20)一样,这里 10 和 20 是实际参数。

在本指南中,我们将讨论按值函数调用。如果您想阅读按引用调用方法,请参考本指南:按引用函数调用

让我们回到原点。

什么是按值函数调用?

当我们在调用函数的同时传递实际参数,这称为按值函数调用。在这种情况下,实际参数的值被复制到形式参数。因此,对形式参数执行的操作不反映在实际参数中。

函数按值调用的示例

如上所述,在按值调用时,实际参数被复制到形式参数,因此函数对参数执行的任何操作都不会影响实际参数。让我们举个例子来理解这个:

#include <stdio.h>int increment(int var){    var = var+1;    return var;}int main(){   int num1=20;   int num2 = increment(num1);   printf("num1 value is: %d", num1);   printf("\nnum2 value is: %d", num2);   return 0;}

输出:

num1 value is: 20num2 value is: 21

说明

我们在调用方法时传递变量num1,但由于我们使用按值调用方法调用函数,因此只将num1的值复制到形式参数var。因此,对var的更改不会反映在num1中。

示例 2:使用按值函数调用交换数字

#include <stdio.h>void swapnum( int var1, int var2 ){   int tempnum ;   /*Copying var1 value into temporary variable */   tempnum = var1 ;   /* Copying var2 value into var1*/   var1 = var2 ;   /*Copying temporary variable value into var2 */   var2 = tempnum ;}int main( ){    int num1 = 35, num2 = 45 ;    printf("Before swapping: %d, %d", num1, num2);    /*calling swap function*/    swapnum(num1, num2);    printf("\nAfter swapping: %d, %d", num1, num2);}

输出:

Before swapping: 35, 45After swapping: 35, 45

为什么变量在交换后仍保持不变?

原因相同 – 函数由num1和num2的值调用。实际上var1和var2实际上是交换的(不是num1和num2)。在按值调用时,实际参数只是复制到形式参数中。

相关推荐