C语言三种参数传递方式
值传递、指针传递、引用传递
只有在函数调用时,才会为形参分配内存空间,调用结束便会释放。
值传递和指针传递,传递的都是实参的一份拷贝。
C语言在线编译器:http://www.dooccn.com/c/
值传递:
- #include <stdio.h>
- void exchange(int x, int y)
- {
- int tmp;
- tmp = x;
- x = y;
- y = tmp;
- printf("x=%d,&x=%d\ny=%d,&y=%d\n",x,&x,y,&y);
- }
- int main(void)
- {
- int a=, b=;
- printf("a=%d,&a=%d\nb=%d,&b=%d\n",a,&a,b,&b);
- exchange(a,b);
- printf("a=%d,&a=%d\nb=%d,&b=%d\n",a,&a,b,&b);
- return ;
- }
结果:
- a=,&a=
- b=,&b=
- x=,&x=
- y=,&y=
- a=,&a=
- b=,&b=
地址传递:
- #include <stdio.h>
- void exchange(int *x, int *y)
- {
- int *tmp=NULL;
- tmp = x;
- x = y;
- y = tmp;
- printf("*x=%d, x=%d\n", *x, x);
- printf("*y=%d, y=%d\n", *y, y);
- }
- int main(void)
- {
- int a=, b=;
- printf("a=%d, &a=%d\n", a, &a);
- printf("b=%d, &b=%d\n", b, &b);
- exchange(&a,&b);
- printf("a=%d, &a=%d\n", a, &a);
- printf("b=%d, &b=%d\n", b, &b);
- return ;
- }
结果:
- a=, &a=-
- b=, &b=-
- *x=, x=-
- *y=, y=-
- a=, &a=-
- b=, &b=-
引用传递
- #include <stdio.h>
- void exchange(int &x, int &y)
- {
- int tmp;
- tmp = x;
- x = y;
- y = tmp;
- printf("x=%d, &x=0x%d\n", x, &x);
- printf("y=%d, &y=0x%d\n", y, &y);
- }
- int main(void)
- {
- int a=, b=;
- printf("a=%d, &a=0x%d\n", a, &a);
- printf("b=%d, &b=0x%d\n", b, &b);
- exchange(a,b);
- printf("a=%d, &a=0x%d\n", a, &a);
- printf("b=%d, &b=0x%d\n", b, &b);
- return ;
- }
结果:
- a=, &a=0x1079344872
- b=, &b=0x1079344876
- x=, &x=0x1079344872
- y=, &y=0x1079344876
- a=, &a=0x1079344872
- b=, &b=0x1079344876
C语言三种参数传递方式的更多相关文章
- C++中函数调用时的三种参数传递方式详解
在C++中,参数传递的方式是“实虚结合”. 按值传递(pass by value) 地址传递(pass by pointer) 引用传递(pass by reference) 按值传递的过程为:首先计 ...
- C++中函数调用时的三种参数传递方式
在C++中,参数传递的方式是“实虚结合”. 按值传递(pass by value) 地址传递(pass by pointer) 引用传递(pass by reference) 按值传递的过程为:首先计 ...
- 【整理】--C++三种参数传递方式
在C++中,共有三种参数传递方式: 按值传递(pass by value) 地址传递(pass by pointer) 引用传递(pass by reference) (1)按值传递的过程为:首先计算 ...
- 固本培元之三:Convert、运算符、流程控制语句、ref/out/in三种参数类型
一.Convert类常用的类型转换方法Convert.ToInt32() 转换为整型(int)Convert.ToChar() 转换为字符型(char)Convert.ToString() 转换为字符 ...
- python函数的四种参数传递方式
python中函数传递参数有四种形式 fun1(a,b,c) fun2(a=1,b=2,c=3) fun3(*args) fun4(**kargs) 四种中最常见是前两种,基本上一般点的教程都会涉及, ...
- 由fprintf和printf看C语言三种标准流
一.C语言中的三种标准流 1.标准输入流:stdin 2.标准输出流:stdout 3.标准错误输出流:stderr 他们的类型都是File * 二.fprintf于printf的区别 frintf( ...
- Java 基础入门随笔(1) JavaSE版——java语言三种技术架构
1.java语言的三种技术架构: J2SE(java 2 Platform Standard Edition):标准版,是为开发普通桌面和商务应用程序提供的解决方案.该技术体系是其他两者的基础,可以完 ...
- R语言-三种方法绘制单位圆
与一般开发语言不同,R以数据统计分析和绘图可视化为主要卖点.本文是第一篇博客,解决一个简单的绘图问题,以练手为目的. 以下直接给出三种单位圆的画法: 方法1 f=seq(,*pi,0.001) x=s ...
- JS003. 事件监听和监听滚动条的三种参数( addEventListener( ) )
全局 1 window.addEventListener('scroll', () => { 2 console.log('------') 3 console.log(document.doc ...
随机推荐
- RAID5的创建(5块磁盘,三块做raid,两块做备份)
RAID5的创建(5块磁盘,三块做raid,两块做备份) 第一步:参考我的上一篇博客,用同样的方法添加5块硬盘.地址如下: https://www.cnblogs.com/Feng-L/p/11735 ...
- vue组件name的作用小结
我们在写vue项目的时候会遇到给组件命名 这里的name非必选项,看起来好像没啥用处,但是实际上这里用处还挺多的 ? 1 2 3 export default { name:'xxx' } 1. ...
- 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 ...
- Windows10下Git环境变量配置
一.确定Git正确安装并能使用 右键项目目录,检查Git版本: 输入: git --version 二. 配置环境变量 右键我的电脑 --> 属性 点击高级系统设置 --> 环境变量 - ...
- drf框架知识总结
- Pwn-level2(x64)
题目地址 https://dn.jarvisoj.com/challengefiles/level2_x64.04d700633c6dc26afc6a1e7e9df8c94e 已经知道了它是64位了, ...
- Potyczki Algorythmiczne 2019
Runda próbna: A + B 设$f[i]$表示两数相加得到前$i$位的方案数,由$f[i-1]$和$f[i-2]$转移得到. #include<cstdio> #include ...
- <String> 186 293 294 249
186. Reverse Words in a String II 先反转整个字符串,再反转每个单词(调整顺序也可以) 反转单词的时候:当 j 指到最后一个字符的时候,或者 j 的下一个指向空格,则反 ...
- 洛谷P4169 [Violet]天使玩偶/SJY摆棋子
%%%神仙\(SJY\) 题目大意: 一个二维平面,有两种操作: \(1.\)增加一个点\((x,y)\) \(2.\)询问距离\((x,y)\)曼哈顿最近的一个点有多远 \(n,m\le 300 0 ...
- 【转】Linux设置定时任务方法
设置:每天4点运行脚本/var/x/web/train/modeltrain [root@T-XXX-ML-01 log]# crontab -e0 4 * * * /var/x/web/train/ ...