实践如下:

#include <iostream>

using namespace std;

// 普通交换,注意这里的ab值,在具体调用时是基本数据的拷贝,原始数据不会变化
// 因此这里交换后的值是不会变化的
void swap(int a, int b){
int tmp = a;
a = b;
b = tmp;
} // 引用交换, 参数和原始数据指向同一个地方,也可以理解为一种指针
void refSwap(int &a, int &b){
// 需要定义tmp存放临时变量的值
int tmp = a;
a = b;
b = tmp;
} // 指针交换, 参数和原始数据指向同一个地方
void pointSwap(int *a, int *b){
// 需要定义tmp存放临时变量的值
int tmp = *a;
// 指针指向地址值的调换
*a = *b;
*b = tmp;
} int main(){ cout << "引用&指针交换函数实践:" << endl;
int a = ;
int b = ;
cout << "临时变量交换:"<< endl;
swap(a, b);
cout << "a:" << a << endl;
cout << "b:" << b << endl; cout << "传引用交换:"<< endl;
// 注意: 调用传引用时,只要传递普通常量就可以
// 这里可以结合函数参数, &a = a, 所以这里只需要写a
refSwap(a, b);
cout << "a:" << a << endl;
cout << "b:" << b << endl; cout << "指针交换:"<< endl;
// 注意: 调用指针用时,需要加&
// 这里可以结合函数参数, *a = &a, 所以这里需要写&取地址
pointSwap(&a, &b);
cout << "a:" << a << endl;
cout << "b:" << b << endl; cout << "end." << endl;
return ;
}

输出如下:

引用&指针交换函数实践的更多相关文章

  1. PCL智能指针疑云 <三> 智能指针作为函数的传值参数和传引用参数

    一 函数的参数传递可以简单分类为“传值”和“传引用”. 声明函数时,形参带引用“&”,则函数调用时,是把实参所在的内存直接传给函数所开辟的栈内存.在函数内对形参的修改相当于对实参也进行修改. ...

  2. 我的c++学习(12)指针作为函数参数

    ◆ 引用调用与指针传值调用C++中函数的参数的基本使用方法是传值.为了弥补单纯传值的不足,以引用作为函数的参数,从逻辑上讲引用是别名,在函数中对参数的操作,就是对实参的操作,而在物理上是传实参的地址. ...

  3. 深入理解C指针之三:指针和函数

    原文:深入理解C指针之三:指针和函数 理解函数和指针的结合使用,需要理解程序栈.大部分现代的块结构语言,比如C,都用到了程序栈来支持函数的运行.调用函数时,会创建函数的栈帧并将其推到程序栈上.函数返回 ...

  4. c++指向指针的指针与 c++指针作为函数参数传递问题

    一直搞不明白,c++中指针到底是个啥东西,今天遇到到c++,指向指针的指针的问题,突然有点开窍了. 举个例子: int main(int argc, char** argv){ int a[5]={1 ...

  5. C++指针作为函数的参数进行传递时注意的问题

    应注意问题: 当指针作为函数的参数进行传递的时候,本质上还是进行的"值传递",也就是复制了一个新的指向该地址的指针变量. 只有在被调函数中,对指针进行引用操作,才可以达到不需要返回 ...

  6. C++ primer(八)--内联函数 引用变量 引用传递函数参数 函数重载/模板/模板具体化

    一.内联函数     常规函数和内联函数的区别在于C++编译器如何将他们组合到程序中.编译过程的最终产品是可执行程序--由一组机器语言指令组成.运行程序时,操作系统将这些指令载入到计算机内存中,因此每 ...

  7. Delphi 函数指针(函数可以当参数)

    首先学习: 指向非对象(一般的)函数/过程的函数指针 Pascal 中的过程类型与C语言中的函数指针相似,为了统一说法,以下称函数指针.函数指针的声明只需要参数列表:如果是函数,再加个返回值.例如声明 ...

  8. C语言的本质(12)——指针与函数

    往往,我们一提到指针函数和函数指针的时候,就有很多人弄不懂.下面详细为大家介绍C语言中指针函数和函数指针. 1.指针函数 当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,以用于需 ...

  9. perl5 第十二章 Perl5中的引用/指针

    第十二章 Perl5中的引用/指针 by flamephoenix 一.引用简介二.使用引用三.使用反斜线(\)操作符四.引用和数组五.多维数组六.子程序的引用  子程序模板七.数组与子程序八.文件句 ...

随机推荐

  1. Windows下安装Oracle 11g 2版 64位,从下载,安装,测试连接成功~!

    首先进入oracle官网下载文件 点击进入 也可以选择结合PanDownload网页版使用百度链接下载 链接: https://pan.baidu.com/s/1UHJiaMXUrSG2IX793ng ...

  2. Linux--Shell 编程-bash,命令替换,if分支嵌套,运算,输入输出

    SHELL 编程     shell 是一个命令解释器,侦听用户指令.启动这些指令.将结果返回给用户(交互式的shell)     shell 也是一种简单的程序设计语言.利用它可以编写一些系统脚本. ...

  3. Delphi Button组件

  4. EfficientNet学习笔记

    EfficientNet是谷歌大脑在2019年提出的,论文地址是:https://arxiv.org/pdf/1905.11946.pdf 这篇文章主要想解决的一个问题是,如何平衡网络的深度.宽度和分 ...

  5. 韦东山嵌入式Linux学习笔记08--中断体系结构

    中断是什么? 举个栗子, 系统怎么知道你什么时候插入鼠标这个设备? 可以有两种处理方式: 1. 查询方式: 轮询去检测是否有设备插入; 2. 中断的方式 当鼠标插入这个事件发生时, 置位某个寄存器,告 ...

  6. Zabbix Agent配置文件详解

    # This is a config file for the Zabbix agent daemon (Unix)# To get more information about Zabbix, vi ...

  7. HCW 19 Team Round (ICPC format) B. Beggin' For A Node(树的重心,交互题)

    B. Beggin' For A Node time limit per test2.0 s memory limit per test256 MB inputstandard input outpu ...

  8. Function HDU - 6546 (数学,贪心)

    wls 有 n 个二次函数 Fi(x) = aix2 + bix + ci (1 ≤ i ≤ n). 现在他想在∑ni=1xi = m 且 x 为正整数的条件下求∑ni=1Fi(xi)的最小值. 请求 ...

  9. js判断网页标题包含某字符串则替换

    js判断网页标题包含某字符串则替换,代码如下: var tit=document.title; if(tit.indexOf("afish")>0){ tit=tit.rep ...

  10. iptables设置

    一,安装iptables yum -y install iptables-services iptables-devel 二,查看规则 iptables -nL --line-number 三,清空规 ...