c语言编程笔录

首页 >   > 笔记大全

笔记大全

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。我们可以看到,引用调用也可以正确修改实参的值。

总结

传值调用、指针调用和引用调用都有自己的优缺点,需要根据具体情况进行选择。传值调用简单易懂,但不能正确修改实参的值;指针调用可以正确修改实参的值,但需要注意指针的使用;引用调用是指针调用的简便方式,可以正确修改实参的值,但需要注意引用的定义和使用。选择合适的参数传递方式可以提高程序的效率和可读性。