C语言 中的 Call by reference函数

首页 / C语言入门教程 / C语言 中的 Call by reference函数

通过引用调用向函数传递参数的方法将参数的地址复制到参数中,在函数内部,地址用于访问调用中使用的实际参数,这意味着对参数所做的更改会影响传递的参数。

要通过引用传递一个值,参数指针被传递给函数,就像传递任何其他值一样,因此,您需要将函数参数声明为指针类型,如下面的函数swap()所示,该函数通过其参数交换指向的两个整数变量的值。

/* 交换值的函数定义 */
void swap(int *x, int *y) {

   int temp;
   temp=*x;    /* 将值保存在地址 x */
   *x=*y;      /* 将 y 放入 x */
   *y=temp;    /* 将 temp 放入 y */
  
   return;
}

现在让我们通过引用传递值来调用函数swap(),如下面的示例-所示

无涯教程网

#include <stdio.h>
 
/* 函数声明 */
void swap(int *x, int *y);
 
int main () {

   /* 局部变量定义 */
   int a=100;
   int b=200;
 
   printf("Before swap, value of a : %d\n", a );
   printf("Before swap, value of b : %d\n", b );
 
   /* 调用函数来交换值.
      * &a 表示指向 a 的指针。变量 a 的地址和
      * &b 表示指向 b 的指针,即。变量 b 的地址。
   */
   swap(&a, &b);
 
   printf("After swap, value of a : %d\n", a );
   printf("After swap, value of b : %d\n", b );
 
   return 0;
}

让我们将上述代码放在一个C文件中,编译并执行它,以生成以下结果-

Before swap, value of a :100
Before swap, value of b :200
After swap, value of a :200
After swap, value of b :100

它表明更改也反映在函数外部,这与Call by Value不同,在Call by Value中更改不会反映在函数外部。

链接:https://www.learnfk.comhttps://www.learnfk.com/c-programming/c-function-call-by-reference.html

来源:LearnFk无涯教程网

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

机器学习40讲 -〔王天一〕

Node.js开发实战 -〔杨浩〕

视觉笔记入门课 -〔高伟〕

基于人因的用户体验设计课 -〔刘石〕

徐昊 · TDD项目实战70讲 -〔徐昊〕

说透元宇宙 -〔方军〕

商业思维案例笔记 -〔曹雄峰〕

云计算的必修小课 -〔吕蕴偲〕

结构思考力 · 透过结构看思考 -〔李忠秋〕

好记忆不如烂笔头。留下您的足迹吧 :)