学习计算机已经两年了,参数传递已经成功恶心了我两年,今天在写二叉树遍历的时候成功对此忍无可忍。本文是在阅读https://blog.csdn.net/u013097971/article/details/77983810后写下的,算是对参数传递的总结,请移步原创。

一、值传递

值传递有两种,一种是传递参数的值,一种是传递参数的地址

图二中传递的是a,b的地址,在swap函数中,将a,b分别赋值给x,y。虽然说x,y进行了值交换,但是a,b并没有进行交换,所以主函数输出时并未交换

二、地址传递

在该次中传递的是a,b的地址,在swap中,x,y分别表示指向a,b地址的地址,即*x,*y表示a,b的地址,是真正的实现了地址交换,所以主函数输出时实现了交换。

三、引用传递

这是一种最难以理解的传递方式,我去吃点饭,稍后再继续

这顿饭吃的稍微有点长哈,继续说引用传递,引用传递实质是对实参本身进行了直接操作,在改函数中,可以理解为x即a,y即b。

一般函数在调用结束后就会释放所有的内存,在这个swap函数里,是直接对a,b操作,没有进行内存申请,提高了运行效率。

c语言3种方式实现参数传递的更多相关文章

  1. R语言两种方式求指定日期所在月的天数

                 R语言两种方式求指定日期所在月的天数 days_monthday<-function(date){ m<-format(date,format="%m& ...

  2. C语言两种方式实现矩阵的转置

    #include"stdio.h" typedef struct{ int i,j; int v; }Triple; typedef struct{ Triple date[]; ...

  3. C 语言字符串连接的 3种方式

    C 语言字符串连接的 3种方式 #include<stdio.h> #include<stdlib.h> #include<string.h> char *join ...

  4. python和C语言混编的几种方式

    Python这些年风头一直很盛,占据了很多领域的位置,Web.大数据.人工智能.运维均有它的身影,甚至图形界面做的也很顺,乃至full-stack这个词语刚出来的时候,似乎就是为了描述它. Pytho ...

  5. python和C语言互相调用的几种方式

    ? 1 2 3 4 5 6 7 8 9 版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖.如要转贴,必须注明原文网址   http://www.cnblogs.com/Colin-Cai/ ...

  6. 执行Go程序的三种方式及Go语言关键字

    执行 Go 程序的三种方式及 Go 语言关键字 执行 Go 程序的三种方式 一.使用 go run 命令 二.使用 go build 命令 Step1. 对 go 源码源文件执行 go build 命 ...

  7. 第二百五十九节,Tornado框架-模板语言的三种方式

    Tornado框架-模板语言的三种方式 模板语言就是可以在html页面,接收逻辑处理的self.render()方法传输的变量,将数据渲染到对应的地方 一.接收值渲染 {{...}}接收self.re ...

  8. [笔记]Go语言写文件几种方式性能对比

    Go语言中写文件有多种方式,这里进行如下几种方式的速度对比: 打开文件,写入内容,关闭文件.如此重复多次 打开文件,写入内容,defer 关闭文件.如此重复多次 打开文件,重复多次写入内容,defer ...

  9. 通过调用C语言的库函数与在C代码中使用内联汇编两种方式来使用同一个系统调用来分析系统调用的工作机制

    通过调用C语言的库函数与在C代码中使用内联汇编两种方式来使用同一个系统调用来分析系统调用的工作机制 前言说明 本篇为网易云课堂Linux内核分析课程的第四周作业,我将通过调用C语言的库函数与在C代码中 ...

随机推荐

  1. 使用jQuery完成表单验证

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>注 ...

  2. js-day

    1.克莱托指数 公式 :体重(kg) / (身高(m) * 身高(m)) < 20 : 偏瘦 > 20 <25 : 正常 > 25 : 偏旁 步骤: 1.输入体重(weight ...

  3. py_initialize:C调Python出错 是初始化错误?

    还是pythonpath和pythonname变量没有配置正确? py_initialize()方法是什么? In an application embedding Python, this shou ...

  4. [Lua快速了解一下]Lua运行

    -Lua的Hello World print("Hello World") 分号可选 -类似python,进入Lua后再shell中打命令执行语句也可 > print(&qu ...

  5. MongoDB整理笔记の指定命令和指定文件

    MongoDB shell 不仅仅是一个交互式的shell,它也支持执行指定javascript 文件,也支持执行指定的命令片断.有了这个特性,就可以将MongoDB 与linux shell 完美结 ...

  6. Go语言最佳实践——通道和并发

    何时关闭通道: 第一,只有在后面要检查通道是否关闭的时候才需要显式地关闭通道: 第二,应该由发送端的goroutine关闭通道,而不是由接收端的goroutine来完成: 第三,如果通道并不需要检查是 ...

  7. 分享我访问google的方法

    对于程序员来说,有很多技术问题还是通过互联网搜索来解决的.所以百度.google对于我们是多少的重要.但是GOOGLE现在无法访问了.怎么办呢.以下是我访问google的方法. 首先自己制作了一个简单 ...

  8. Android Camera相机功能实现 拍照并保存图片

    AndroidManifest.xml <uses-feature android:name="android.hardware.camera"/> <uses- ...

  9. C# 继承(3)

    接上章代码: class NameList { public NameList() => Console.WriteLine("这个是NameList的构造函数"); ~Na ...

  10. Linux简单部署svn服务

    最近需要练习一下svn的命令行使用方法,以便编写自动化部署的脚本,但是不敢用正式的svn库进行练习,所以自己部署了一个svn服务,用来练习 1.安装svn server 我用的是ubuntu $apt ...