https://www.runoob.com/cprogramming/c-functions.html

示例程序均以交换两个整数为例。

  1. 值传递
#include <stdio.h>void swap(int x, int y);
void swap(int x, int y)
{int temp;temp = x;x = y;y = temp;
}int main( int argc, char *argv[] )
{int a = 5;int b = 10;swap(a, b); //调用交换函数printf("交换结果为 a = %d, b = %d\n",a,b);return 0;
}

由于值传递是单向传递,传递过程中只是改变了形参的数值,并未改变实参的数值,因此并不会改变a和b原有的值。

  1. 指针传递
#include <stdio.h>void swap(int *x, int *y);
void swap(int *x, int *y)
{int temp;temp = *x;*x = *y;*y = temp;
}int main( int argc, char *argv[] )
{int a = 5;int b = 10;swap(&a, &b); //调用交换函数printf("交换结果为 a = %d, b = %d\n",a,b);return 0;
}

指针传递过程中,将a和b的地址分别传递给了x和y,在函数体内部改变了a、b所在地址的值,即交换了a、b的数值。

  1. 引用传递
#include <stdio.h>void swap(int &x, int &y);
void swap(int &x, int &y)
{int temp;temp = x;x = y;y = temp;
}int main( int argc, char *argv[] )
{int a = 5;int b = 10;swap(a, b); //调用交换函数printf("交换结果为 a = %d, b = %d\n",a,b);return 0;
}

引用传递中,在调用swap(a, b);时函数会用a、b分别代替x、y,即x、y分别引用了a、b变量,这样函数体中实际参与运算的其实就是实参a、b本身,因此也能达到交换数值的目的。

注:严格来说,C语言中是没有引用传递,这是C++中语言特性,因此在.c文件中使用引用传递会导致程序编译出错。

函数参数传递常用的三种方式相关推荐

  1. 向函数传递结构的三种方式

    向函数传递结构的三种方式 零.写在前面 在程序设计的过程当中,我们经常会涉及到选择数据的类型,在很多情况下,单单是普通的变量和数组并不足以满足我们的需求,这时候,C语言为我们提供了一种计较好用的数据类 ...

  2. vue前端常用的三种方式模拟获取数据

    前端的三种方式模拟获取数据 1⃣️.mockjs插件获取: 1.首先我们先进行安装mockjs,进入项目在终端输入:npm install mockjs --save 2.我们可以在src目录下新建m ...

  3. 数据导入HBase最常用的三种方式及实践分析

    要使用Hadoop,数据合并至关重要,HBase应用甚广.一般而言,需要针对不同情景模式将现有的各种类型的数据库或数据文件中的数据转入至HBase中. 常见方式为:1.使用HBase的API中的Put ...

  4. php 多参数函数,php自定义函数的参数在函数间传递的三种方式详解

    在调用函数时,需要向函数传递参数,被传入的参数成为实参,而函数定义时的参数为形参.上一章节我们对php自定义函数的参数进行了实例讲解,本章节就重点介绍一下函数间参数传递的3种方式:按照值传递,按引用传 ...

  5. 函数传参的三种方式(详细)

    最近又碰到了函数传参的问题,每次碰到都会让作者疑惑一段时间,这次干脆总结整理一下,顺便让自己更加透彻的了解传参的问题.咱们开始吧. c语言中,函数调用时传送给形参表的实参必须与形参有三个一致:类型.个 ...

  6. C++ 函数传参的三种方式

    2018-04-03 创建人:Ruo_Xiao 开发环境:VS2010 邮箱:xclsoftware@163.com 值传递:将变量名作为实参和形参.这时传给形参的是变量的值,传递是单向的.如果在执行 ...

  7. HashMap遍历的三种方式

    HashMap遍历的三种方式 hashmap常用的三种方式分为 keySet遍历 就是把这个hashmap所有的key都拿出来放到一个set里,然后在通过这个key去通过hashmap的get方法去查 ...

  8. 函数参数传递三种方式(传值方式,地址传递,引用传递)

    函数参数传递三种方式(传值方式,地址传递,引用传递) 形参与实参 形参即形式上的参数,对实参的一种抽象类型描述只是声明一个函数能够接受什么类型的实参,而不确定接受的实参的具体内容是什么 实参即传递给函 ...

  9. 第二周项目1函数参数传递的三种方式

    /* .*Copyright (c) 2014,烟台大学计算机学院 *All right reserved. *文件名称:函数参数传递的三种方式.cpp *作者:彭子竹 *完成日期:2015年9月11 ...

最新文章

  1. vue使用px2rem
  2. php 返回数组 键名,php array_keys 返回数组的键名
  3. Java 8 中 Date与LocalDateTime、LocalDate、LocalTime互转
  4. element-ui的NavMenu置于顶部(mode=horizontal)时,让菜单可以滚动(overflow-x:auto)(主要用于移动端的菜单显示)...
  5. eclipse取消空格补全
  6. (五)Redis在项目中应用
  7. 帆软报表(finereport)控件背景色更改
  8. 本科生一作发10篇SCI,我们硕博生情何以堪啊……
  9. 画米老鼠_蔡康永都在买的画你也买得起,村上隆作品收藏大全
  10. SpringCloud 从菜鸟到大牛之八 服务容错 Hystrix
  11. 那些用Go实现的分布式事务框架之DTM
  12. linux系统中如何安装qwt,在Linux上部署Qt及Qwt
  13. 两个字符串 char* a, char* b,输出b在a中的位置次序。
  14. python websocket django vue_Python Django Vue 项目创建过程详解
  15. 《因果推理原理:基础与学习算法》第一章 因果模型和统计模型
  16. dell笔记本驱动安装失败_如何以正确的顺序重新安装驱动程序 | Dell 中国
  17. 简述冯诺依曼体系结构计算机的工作原理。
  18. SpringBoot 通过阿里云的短信功能 实现发送手机验证码
  19. 青出于蓝胜于蓝 (dfs序 + BIT)
  20. 三角形公式 [重心, 内心, 外心, 垂心]

热门文章

  1. 如何根据点云计算对应物体的长宽
  2. 如何使用ggplot2绘制左右分布的柱状图
  3. 在线作图|在线做随机森林分析
  4. Nature、Science的绘图新宠,博导人论文覆盖率高达78%...
  5. MetaWRAP分箱流程实战和结果解读
  6. 扩增子分析解读1质控,实验设计,双端序列合并
  7. RepeatMasker安装和使用——基因组重复序列注释
  8. Android酷欧天气实训报告书,萌新求助,第一行代码酷欧天气开发,遇到coolweather keeps s...
  9. R语言e1071包中的支持向量机:构建nu-classification类型的支持向量机SVM并分析不同nu值惩罚下模型分类螺旋线型(sprials)线性不可分数据集的表现
  10. R语言使用pROC包绘制ROC曲线、获取最优阈值(threshold)及最优阈值对应的置信区间