值传递、指针传递、引用传递

只有在函数调用时,才会为形参分配内存空间,调用结束便会释放。

值传递和指针传递,传递的都是实参的一份拷贝。

C语言在线编译器:http://www.dooccn.com/c/

值传递:

  1. #include <stdio.h>
  2.  
  3. void exchange(int x, int y)
  4. {
  5. int tmp;
  6. tmp = x;
  7. x = y;
  8. y = tmp;
  9. printf("x=%d,&x=%d\ny=%d,&y=%d\n",x,&x,y,&y);
  10. }
  11.  
  12. int main(void)
  13. {
  14. int a=, b=;
  15. printf("a=%d,&a=%d\nb=%d,&b=%d\n",a,&a,b,&b);
  16. exchange(a,b);
  17. printf("a=%d,&a=%d\nb=%d,&b=%d\n",a,&a,b,&b);
  18. return ;
  19. }

结果:

  1. a=,&a=
  2. b=,&b=
  3. x=,&x=
  4. y=,&y=
  5. a=,&a=
  6. b=,&b=

地址传递:

  1. #include <stdio.h>
  2.  
  3. void exchange(int *x, int *y)
  4. {
  5. int *tmp=NULL;
  6. tmp = x;
  7. x = y;
  8. y = tmp;
  9. printf("*x=%d, x=%d\n", *x, x);
  10. printf("*y=%d, y=%d\n", *y, y);
  11. }
  12.  
  13. int main(void)
  14. {
  15. int a=, b=;
  16. printf("a=%d, &a=%d\n", a, &a);
  17. printf("b=%d, &b=%d\n", b, &b);
  18. exchange(&a,&b);
  19. printf("a=%d, &a=%d\n", a, &a);
  20. printf("b=%d, &b=%d\n", b, &b);
  21. return ;
  22. }

结果:

  1. a=, &a=-
  2. b=, &b=-
  3. *x=, x=-
  4. *y=, y=-
  5. a=, &a=-
  6. b=, &b=-

引用传递

  1. #include <stdio.h>
  2.  
  3. void exchange(int &x, int &y)
  4. {
  5. int tmp;
  6. tmp = x;
  7. x = y;
  8. y = tmp;
  9. printf("x=%d, &x=0x%d\n", x, &x);
  10. printf("y=%d, &y=0x%d\n", y, &y);
  11. }
  12.  
  13. int main(void)
  14. {
  15. int a=, b=;
  16. printf("a=%d, &a=0x%d\n", a, &a);
  17. printf("b=%d, &b=0x%d\n", b, &b);
  18. exchange(a,b);
  19. printf("a=%d, &a=0x%d\n", a, &a);
  20. printf("b=%d, &b=0x%d\n", b, &b);
  21. return ;
  22. }

结果:

  1. a=, &a=0x1079344872
  2. b=, &b=0x1079344876
  3. x=, &x=0x1079344872
  4. y=, &y=0x1079344876
  5. a=, &a=0x1079344872
  6. b=, &b=0x1079344876
  1.  

C语言三种参数传递方式的更多相关文章

  1. C++中函数调用时的三种参数传递方式详解

    在C++中,参数传递的方式是“实虚结合”. 按值传递(pass by value) 地址传递(pass by pointer) 引用传递(pass by reference) 按值传递的过程为:首先计 ...

  2. C++中函数调用时的三种参数传递方式

    在C++中,参数传递的方式是“实虚结合”. 按值传递(pass by value) 地址传递(pass by pointer) 引用传递(pass by reference) 按值传递的过程为:首先计 ...

  3. 【整理】--C++三种参数传递方式

    在C++中,共有三种参数传递方式: 按值传递(pass by value) 地址传递(pass by pointer) 引用传递(pass by reference) (1)按值传递的过程为:首先计算 ...

  4. 固本培元之三:Convert、运算符、流程控制语句、ref/out/in三种参数类型

    一.Convert类常用的类型转换方法Convert.ToInt32() 转换为整型(int)Convert.ToChar() 转换为字符型(char)Convert.ToString() 转换为字符 ...

  5. python函数的四种参数传递方式

    python中函数传递参数有四种形式 fun1(a,b,c) fun2(a=1,b=2,c=3) fun3(*args) fun4(**kargs) 四种中最常见是前两种,基本上一般点的教程都会涉及, ...

  6. 由fprintf和printf看C语言三种标准流

    一.C语言中的三种标准流 1.标准输入流:stdin 2.标准输出流:stdout 3.标准错误输出流:stderr 他们的类型都是File * 二.fprintf于printf的区别 frintf( ...

  7. Java 基础入门随笔(1) JavaSE版——java语言三种技术架构

    1.java语言的三种技术架构: J2SE(java 2 Platform Standard Edition):标准版,是为开发普通桌面和商务应用程序提供的解决方案.该技术体系是其他两者的基础,可以完 ...

  8. R语言-三种方法绘制单位圆

    与一般开发语言不同,R以数据统计分析和绘图可视化为主要卖点.本文是第一篇博客,解决一个简单的绘图问题,以练手为目的. 以下直接给出三种单位圆的画法: 方法1 f=seq(,*pi,0.001) x=s ...

  9. JS003. 事件监听和监听滚动条的三种参数( addEventListener( ) )

    全局 1 window.addEventListener('scroll', () => { 2 console.log('------') 3 console.log(document.doc ...

随机推荐

  1. RAID5的创建(5块磁盘,三块做raid,两块做备份)

    RAID5的创建(5块磁盘,三块做raid,两块做备份) 第一步:参考我的上一篇博客,用同样的方法添加5块硬盘.地址如下: https://www.cnblogs.com/Feng-L/p/11735 ...

  2. vue组件name的作用小结

    我们在写vue项目的时候会遇到给组件命名 这里的name非必选项,看起来好像没啥用处,但是实际上这里用处还挺多的 ? 1 2 3 export default {    name:'xxx' } 1. ...

  3. python,adb,分别给多个设备安装多个apk文件,os.popen(); os.system; os.path.splitext(); a.split(' \t'); readlines(); append(); os.path.join(); time.sleep();

    #encoding:utf-8import os,time#=======================查找手机设备序列号=============a='adb devices'b=os.popen ...

  4. Windows10下Git环境变量配置

    一.确定Git正确安装并能使用 右键项目目录,检查Git版本: 输入:  git --version 二. 配置环境变量 右键我的电脑 --> 属性 点击高级系统设置 --> 环境变量 - ...

  5. drf框架知识总结

  6. Pwn-level2(x64)

    题目地址 https://dn.jarvisoj.com/challengefiles/level2_x64.04d700633c6dc26afc6a1e7e9df8c94e 已经知道了它是64位了, ...

  7. Potyczki Algorythmiczne 2019

    Runda próbna: A + B 设$f[i]$表示两数相加得到前$i$位的方案数,由$f[i-1]$和$f[i-2]$转移得到. #include<cstdio> #include ...

  8. <String> 186 293 294 249

    186. Reverse Words in a String II 先反转整个字符串,再反转每个单词(调整顺序也可以) 反转单词的时候:当 j 指到最后一个字符的时候,或者 j 的下一个指向空格,则反 ...

  9. 洛谷P4169 [Violet]天使玩偶/SJY摆棋子

    %%%神仙\(SJY\) 题目大意: 一个二维平面,有两种操作: \(1.\)增加一个点\((x,y)\) \(2.\)询问距离\((x,y)\)曼哈顿最近的一个点有多远 \(n,m\le 300 0 ...

  10. 【转】Linux设置定时任务方法

    设置:每天4点运行脚本/var/x/web/train/modeltrain [root@T-XXX-ML-01 log]# crontab -e0 4 * * * /var/x/web/train/ ...