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 ...
随机推荐
- LInkHashMap源码分析
说LinkHashMap之前,我们先来谈谈什么是LRU算法? 按照英文的直接原义就是Least Recently Used,最近最久未使用法,它是按照一个非常注明的计算机操作系统基础理论得来的:最近使 ...
- 学习CNN系列一:原理篇
CNN的发展历程: 1962年,卷积神经网络的研究起源于Hubel和Wiesel研究毛脑皮层的发现局部互连网络可以有效降低反馈神经网络的复杂性. 1980年,CNN的第一个实现网络:Fukushima ...
- you have new mail in /var/spool/mail/root !
今天开发的同事告诉我,他在登录系统时老是提示you have new mail in /var/spool/mail/root ! 我一猜就知道他们肯定又自己写定时任务了,这样的事已经发生过好几回了, ...
- (转)SpringMVC表单多对象传递小技巧——@InitBinder
转:https://www.jianshu.com/p/59771cbf373d 1.问题情景 项目中前端后台的数据传递是必不可少的,比如说我们要在一张表单中提交对象,如果只是一个对象就就很好做,因为 ...
- ubuntu系统中查看python模块的源码
案例:查看multiprocessing模块源码 1. 进入交互模式,导入模块,以multiprocessing模块为例 2. 查看multiprocessing.__file__属性,找到该模块的源 ...
- LeetCode 回文串问题
5. Longest Palindromic Substring 647. Palindromic Substrings 解法一:从中心一点向两边扩展,需要考虑中心为一点,中心为两点. 解法二:马拉车 ...
- 使用threaddump-analyzer 快速查看jvm thread 状态信息
日常开发中,我们可以需要通过thread dump 查看线程信息,比如锁,spotify 团队提供了一个web 界面,很方便 以下是简单使用,同时添加了docker 支持 添加docker 支持 cl ...
- iOS Workflow 分享 - Scan QR Code
很多时候我们无意识地用微信扫描一个 QR Code,然后无论打开的是什么我们用就是了.我经常会好奇到底 QR Code 编码的是什么信息,到底是一个 ID 呢,还是一个 URL(可能是 deeplin ...
- 为Azure DevOps Server (TFS) 配置安全访问(HTTPS with SSL)
Contents 1. 概述 2. HTTP和HTTS比较 支持HTTP和HTTPS两种方式 要求所有连接使用HTTPS 优点: 缺点: 3. 为Azure DevOps Server 配置安全访问 ...
- golang实战--客户信息管理系统
总计架构图: model/customer.go package model import ( "fmt" ) type Customer struct { Id int Name ...