c语言函数调用的三种方式是什么
更新时间:2023-07-11第一种方式:传值调用
传值调用顾名思义就是将实参的值传递给形参,函数通过形参来操作实参。传值调用时,函数的形参是实参的一个副本,它们的地址不同。函数对形参进行操作不会影响实参的值。下面是一个示例:
#include <stdio.h>
void swap(int x, int y){
int temp;
temp = x;
x = y;
y = temp;
}
int main(){
int a = 10;
int b = 20;
swap(a, b);
printf("a=%d, b=%d",a,b);
return 0;
}
输出结果为:a=10, b=20。我们可以看到,虽然在函数内部进行了交换,但实参的值并未改变。
第二种方式:指针调用
指针调用时,实参是一个指向变量的指针。在函数内部通过指针来修改实参的值,因为指针指向的是实参的地址,所以对指针的改变会影响到实参的值。下面是一个示例:
#include <stdio.h>
void swap(int *x, int *y){
int temp;
temp = *x;
*x = *y;
*y = temp;
}
int main(){
int a = 10;
int b = 20;
swap(&a, &b);
printf("a=%d, b=%d",a,b);
return 0;
}
输出结果为:a=20, b=10。我们可以看到,指针调用可以正确修改实参的值。
第三种方式:引用调用
引用调用是C++中新增的特性,它实际上是指针调用的一种简便方式。在函数的形参前加上“&”符号,就可以将其定义为引用形参。引用调用不需要使用“&”符号取地址,下面是一个示例:
#include <stdio.h>
void swap(int &x, int &y){
int temp;
temp = x;
x = y;
y = temp;
}
int main(){
int a = 10;
int b = 20;
swap(a, b);
printf("a=%d, b=%d",a,b);
return 0;
}
输出结果为:a=20, b=10。我们可以看到,引用调用也可以正确修改实参的值。
总结
传值调用、指针调用和引用调用都有自己的优缺点,需要根据具体情况进行选择。传值调用简单易懂,但不能正确修改实参的值;指针调用可以正确修改实参的值,但需要注意指针的使用;引用调用是指针调用的简便方式,可以正确修改实参的值,但需要注意引用的定义和使用。选择合适的参数传递方式可以提高程序的效率和可读性。