C 引用方式调用函数

向函数传递参数的引用调用方法,把参数的地址复制给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。

按引用传递值,参数指针被传递给函数,就像传递其他值给函数一样。因此相应地,在下面的函数 swap() 中,您需要声明函数参数为指针类型,该函数用于交换参数所指向的两个整数变量的值。

/* 函数定义 */

void swap(int *x, int *y)

{

int temp;

temp = *x; /* 保存地址 x 的值 */

*x = *y; /* 把 y 赋值给 x */

*y = temp; /* 把 temp 赋值给 y */

return;

}

如需了解 C 中指针的更多细节,请访问 C - 指针 章节。

现在,让我们通过引用传值来调用函数 swap():

#include

/* 函数声明 */

void swap(int *x, int *y);

int main ()

{

/* 局部变量定义 */

int a = 100;

int b = 200;

printf("交换前,a 的值: %d\n", a );

printf("交换前,b 的值: %d\n", b );

/* 调用函数来交换值

* &a 表示指向 a 的指针,即变量 a 的地址

* &b 表示指向 b 的指针,即变量 b 的地址

*/

swap(&a, &b);

printf("交换后,a 的值: %d\n", a );

printf("交换后,b 的值: %d\n", b );

return 0;

}

当上面的代码被编译和执行时,它会产生下列结果:

交换前,a 的值: 100

交换前,b 的值: 200

交换后,a 的值: 200

交换后,b 的值: 100

上面的实例表明了,与传值调用不同,引用调用在函数内改变了 a 和 b 的值,实际上也改变了函数外 a 和 b 的值。

c语言 函数 引用调用,C 引用方式调用函数相关推荐

  1. js中函数的三种定义方式、函数声明、函数同名重复、函数删除、

    全栈工程师开发手册 (作者:栾鹏) js系列教程4-函数.函数参数 在js中,函数本身属于对象的一种,因此可以定义.赋值,作为对象的属性或者成为其他函数的参数.函数名只是函数这个对象类的引用. 一.函 ...

  2. matlab调用com,com方式调用matlab(四)

    目录 com方式调用matlab(一) com方式调用matlab(二) com方式调用matlab(三) com方式调用matlab(四) com方式调用matlab(五)        com方式 ...

  3. python函数参数传递的两种方式_Python函数的参数传递方式

    Python函数的参数传递方式 一.普通 def add(a,b): return a+b print(add(1,2)) #输出结果:3 二.可选参数 def myjoin(string,sep=' ...

  4. javascript函数进阶详细内容 函数闭包 箭头函数 call bind apply用法 偏函数 回调函数

    JS函数进阶 这次的内容我会给大家详细介绍函数方面的内容 1.箭头函数:ES6新增的定义函数的方式,箭头函数是用来简化函数定义语法的. - 箭头函数的语法: ()=>{} ()里面写形式参数,{ ...

  5. c++ 函数指针_进化论——从函数指针到被结构封装的函数指针及参数的应用举例...

    ↑↑↑ 点击上方公众号名称关注,不放过任何转变的机会. ✎ 编 者 悟 语 借口再小也会瓦解人的意志. 文 章 导 读 今天带大家用下函数指针,然后将函数指针和函数参数封装到结构体中,接着将数据用动态 ...

  6. 【❗划重点!C语言函数参数传递只有两种方式(值传递,地址传递),不支持“引用传递”!❗】

    引子 上篇文章<C语言函数传参の结构体数组篇>提到了C语言的函数参数传递方式,百度了一一一大圈,有说两种的,也有说三种的,简直把我搞晕了,"值传递和地址传递"是毫无疑问 ...

  7. 【C 语言】动态库封装与设计 ( 动态库调用环境搭建 | 创建应用 | 拷贝动态库相关文件到源码路径 | 导入头文件 | 配置动态库引用 | 调用动态库中的函数 )

    文章目录 一.在 Visual Studio 2019 中创建 " 控制台应用 " 程序 二.拷贝 xxx.lib.xxx.dll.xxx.h 到源码路径 三.导入 xxx.h 头 ...

  8. Java Lambda(语言篇——lambda,方法引用,目标类型,默认方法,函数接口,变量捕获)

    深入理解Java 8 Lambda(语言篇--lambda,方法引用,目标类型和默认方法) 原文链接:http://zh.lucida.me/blog/java-8-lambdas-insideout ...

  9. c语言弱符号与函数指针,浅谈C语言中的强符号、弱符号、强引用和弱引用【转】...

    首先我表示很悲剧,在看<程序员的自我修养--链接.装载与库>之前我竟不知道C有强符号.弱符号.强引用和弱引用.在看到3.5.5节弱符号和强符号时,我感觉有些困惑,所以写下此篇,希望能和同样 ...

最新文章

  1. 友元类实例:日期类 学生类
  2. 皮一皮:中文汉字真是博大精深...
  3. js中prototype用法
  4. 4个人的学校(转载)
  5. Ubuntu16.04系统 GPU1070Ti下搭建Caffe++Nvidia显卡驱动+Cuda9.0+Cudnn7.0.5
  6. 《操作系统实战 45 讲》14 Linux初始化(上):GRUB与vmlinuz的结构(学习笔记)
  7. 解密普元大文件传输核心技术
  8. 群晖NPV套件(NPV Server)官方下载方法
  9. MiFlash 刷机有感
  10. h5调用指纹识别_H5 画布指纹识别
  11. Linux 安装rabbitmq
  12. 苹果计算机如何出现关机界面,电脑关机.教您苹果电脑怎么关机
  13. 车载平板android 002,用平板代替车载大屏,行得通吗?
  14. Appium环境搭建之Android SDK及模拟器的下载配置
  15. 编写高质量代码改善java程序的151个建议——[110-117]异常及Web项目中异常处理
  16. 程序员的等级,各位属于哪一级的呢?
  17. 什么是BGP线路?BGP线路机房好吗?
  18. 关于初学者学习scrapy-redis的教程(只针对于图片)
  19. Android勒索软件研究报告
  20. 下载著名音乐播放器AIMP3的正式版

热门文章

  1. 小叶入门之Python爬虫(一)
  2. python列表怎么比较大小_python列表怎么比较大小
  3. 强化学习与Deep Q-Network(DQN)
  4. 免费文本转语音(在线文本转语音)
  5. 2023秋招--游卡--游戏客户端--一面面经
  6. 梳妆台行业调研报告 - 市场现状分析与发展前景预测
  7. Python制作CSDN数据中心——CSDN机器人访客
  8. KOOCAN非正常电影排行榜之这个丧尸不太冷
  9. c语言运算符 amp 的意思,C语言运算符是什么意思
  10. Javascript版开心农场