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

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

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

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语言三种参数传递方式的更多相关文章

  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. 5-5 可视化库Seaborn-多变量分析绘图

      Parameters:¶ 参数 解释 变量 x,y,hue 数据集变量 变量名 date 数据集 数据集名 row,col 更多分类变量进行平铺显示 变量名 col_wrap 每行的最高平铺数 整 ...

  2. win10 anaconda3 python3.6安装tensorflow keras tensorflow_federated详细步骤及在jupyter notebook运行指定的conda虚拟环境

    本文链接:https://blog.csdn.net/weixin_44290661/article/details/1026789071. 安装tensorflow keras tensorflow ...

  3. win10python安装iis

    django部署iis https://www.cnblogs.com/guangang/articles/9268644.html python部署iis https://www.cnblogs.c ...

  4. 小白专场-堆中的路径-c语言实现

    目录 一.题意理解 二.堆的表示及其操作 三.主程序 更新.更全的<数据结构与算法>的更新网站,更有python.go.人工智能教学等着你:https://www.cnblogs.com/ ...

  5. java1.8 AQS AbstractQueuedSynchronizer学习

    AQS concurrent并发包中非常重要的顶层锁类,往往用的比较多的是ReentrantLock,然而ReentrantLock的实现依赖AbstractQueuedSynchronizer在到上 ...

  6. SuperSocket 2.0 发布第一个预览版, 另寻找Yang Fan哥哥

    昨天,SuperSocket的作者发布了2.0版本的第一个预览版.SuperSocket 2.0 是一个经过全新设计的,第一个完全基于.NET Core的版本.作者正在积极尝试提供更简单易用的API的 ...

  7. zlib压缩相关

    相关原理 deflate(RFC1951):一种压缩算法,使用LZ77和哈弗曼进行编码: zlib(RFC1950):一种格式,是对deflate进行了简单的封装,他也是一个实现库(delphi中有z ...

  8. Debug 路漫漫-14:Python: AttributeError: module 'tensorflow' has no attribute 'sub'

    在调试 <Neural Factorization Machines for Sparse Predictive Analytics>论文的源码(https://github.com/he ...

  9. php explode容易犯的错误

    php explode容易犯的错误 <pre> $pos = strpos($v, 'Controller'); if (is_numeric($pos)) { $kongzhiqifeg ...

  10. Spring-@ControllerAdvice 拦截异常并统一处理

    在spring 3.2中,新增了@ControllerAdvice 注解, 可以用于定义@ExceptionHandler.@InitBinder.@ModelAttribute,并应用到所有@Req ...