易百教程

C语言中按值调用和按引用调用有什么区别?

以下是按值调用和按引用调用之间的区别:

按值调用 按引用调用
说明 当值的副本传递给函数时,原始值不会被修改。 当将值的副本传递给函数时,会修改原始值。
内存位置 实际参数和形式参数在不同的内存位置创建。 实际参数和形式参数在同一内存位置创建。
安全性 在这种情况下,实际参数仍然是安全的,因为它们不能被修改。 在这种情况下,实际参数不可靠,因为它们已被修改。
参数 实际参数的副本被传递给形式参数。 实际参数的地址被传递给它们各自的形式参数。

按值调用的示例:

#include <stdio.h>  
void change(int,int);  
int main()  
{  
    int a=10,b=20;  
    change(a,b); //calling a function by passing the values of variables.  
    printf("Value of a is: %d",a);  
    printf("\n");  
    printf("Value of b is: %d",b);  
    return 0;  
}  
void change(int x,int y)  
{  
    x=13;  
    y=17;  
}

输出结果如下 -

Value of a is: 10
Value of b is: 20

引用调用示例:

#include <stdio.h>  
void change(int*,int*);  
int main()  
{  
    int a=10,b=20;  
    change(&a,&b); // calling a function by passing references of variables.  
    printf("Value of a is: %d",a);  
    printf("\n");  
    printf("Value of b is: %d",b);  
    return 0;  
}  
void change(int *x,int *y)  
{  
    *x=13;  
    *y=17;  
}

输出结果如下 -

Value of a is: 13
Value of b is: 17