当函数的形参是变量时,函数内的操作是只对形参的操作,并不会对实参造成影响

当函数的形参是引用时,在函数内对形参操作的同时也会对实参造成影响

 1 #include <iostream>
2 using namespace std;
3 void SwapValue(int a, int b)//在主函数之前设置自定义函数,形参是变量时的传递值
4 {
5 int tmp;//定义变量 tmp 用于a,b值交换
6 tmp = a;
7 a = b;
8 b = tmp;
9 cout << "在SwapValue()函数中:\t\ta =" << a << ",b=" << b << endl;
10 return;
11 }
12 void SwapRef(int& a, int& b)//设置两个引用a,b,形参是引用时的传递值
13 {
14 int tmp;//用于a,b值交换
15 tmp = a;
16 a = b;
17 b = tmp;
18 cout << "在SwapRef函数中:\t\ta =" << a << ",b=" << b << endl;
19 return;
20 }
21 int main()
22 {
23 int a = 10, b = 20;
24 cout << "数据交换前:\t\ta=" << a << ",b=" << b << endl << endl;
25 SwapValue(a, b);//调用SwapValue函数
26 cout << "调用SwapValu()后:\t\t a=" << a << ",b=" << b << endl;//原因是在函数中只有形参被交换,实参未被交换,因此输出值未被交换,
27 a = 10;
28 b = 20;
29 SwapRef(a, b);//调用SwapRef函数
30 cout << "调用SwapRef()后:\t\ta=" << a << ",b=" << b << endl;//输出值被交换,原因是函数的形参是引用,函数内部对形参的交换就是对实参的交换
31 return 0;
32 }

C++练习6 不同参数的传递方式的更多相关文章

  1. plsql 储存过程 参数的传递方式?

    /* 存储过程 一.oracel存储过程 1.没有返回值 return 值: 2.用输出参数来代替返回值: 3.输出参数可以有多个 二.参数的传递方式 1. 按位置传递 2. 按名字传递 3.混合传递 ...

  2. JNI_Z_07_方法的操作(没有String类型的参数)_参数的传递方式

    1. 2.VC6(CPP)的DLL代码: #include<stdio.h> #include "jniZ_TjniMethod02.h" JNIEXPORT void ...

  3. 『无为则无心』Python函数 — 26、Python函数参数的传递方式

    目录 1.位置参数 2.关键字参数 3.缺省参数(默认参数) 4.不定长参数(可变参数) (1)包裹位置传递 (2)包裹关键字传递 5.位置参数.默认参数.可变参数的混合使用 6.拓展:参数解包 提示 ...

  4. springMVC参数的传递方式(1.通过@PathVariabl获取路径参数,2.@ModelAttribute获取数据,3.HttpServletRequest取参,4@RequestParam)

     通过@PathVariabl注解获取路径中传递参数 JAVA      @RequestMapping(value = "/{id}/{str}")      public  ...

  5. Java方法参数的传递方式

    程序设计语言中,将参数传递给方法(或函数)有两种方法.按值传递(call by value)表示方法接受的是调用者提供的值:按引用调用(call by reference)表示方法接受的是调用者提供的 ...

  6. (十九)golang--函数参数的传递方式

    两种传递方式: 值传递:值类型参数默认 引用传递:引用类型参数默认 一般来说,地址传递效率高,因为数据量小. 值类型:int.float.bool.string.数组.结构体: 引用类型:指针.切片. ...

  7. 基于.Net Framework 4.0 Web API开发(2):ASP.NET Web APIs 参数传递方式详解

    概述:  ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件,一个简单的ApiController加上需要的Action就能工作.调用API过程中参数的传递是必须的,本节就来谈谈 ...

  8. 学习JS的心路历程-参数传递方式(上)

    很多人认为JS的传递方式是值是Call by value, 物件及数组是Call by Reference.甚至还有人宣称其实JS是Call by sharing,那到底是哪一个呢? 这两天我们一一来 ...

  9. MyBatis 各种参数传递方式

    MyBatis参数传递方式 情况一:Mapper映射器接口方法参数只有一个且为基本类型 接口方法: public List<UserEntity> selectUserByAge(int ...

  10. 深入理解javascript函数参数与闭包(一)

    在看此文章,希望先阅读关于函数基础内容 函数定义与函数作用域 的章节,因为这篇文章或多或少会涉及函数基础的内容,而基础内容,我放在函数定义函数作用域 章节. 本文直接赘述函数参数与闭包,若涉及相关知识 ...

随机推荐

  1. 【Java并发006】使用层面:Lock锁机制全解析

    一.前言 二.synchronized局限性 + Lock锁机制的引入 2.1 synchronized局限性 第一,使用synchronized,其他线程只能等待直到持有锁的线程执行完释放锁(syn ...

  2. 理解MySQL事务

    事务是什么 百度百科是这么定义的: 事务(Transaction),一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元.在关系数据库中,一个事务可以是一条 ...

  3. Java锁的逻辑(结合对象头和ObjectMonitor)

    我们都知道在Java编程中多线程的同步使用synchronized关键字来标识,那么这个关键字在JVM底层到底是如何实现的呢. 我们先来思考一下如果我们自己实现的一个锁该怎么做呢: 首先肯定要有个标记 ...

  4. 使用Supervisor监控mysql

    Supervisor安装教程参考:https://www.cnblogs.com/brad93/p/16639953.html mysql安装教程参考:https://www.cnblogs.com/ ...

  5. 预编译SQL为什么能够防止SQL注入

    前言 之前我一个搞网络安全的朋友问了我一个的问题,为啥用 PreparedStatement 预编译的 SQL 就不会有被 SQL 注入的风险? 第一时间我联想到的是八股文中关于 Mybatis 的脚 ...

  6. angr_ctf——从0学习angr(二):状态操作和约束求解

    状态操作 angr中提到的状态(state)实际上是一个Simstate类,该类可由Project预设得到.预设完成后,还可以根据需要对某些部分进行细化操作. 一个state包含了程序运行到某个阶段时 ...

  7. UBOOT 启动流程

    一.概述 uboot 的启动流程在网上有很多大佬记录,但是了对于像我这样的新手就有些困难了,而我也不做 uboot 相关的工作,所以没必去研究代码,这里我特意整理了一下,以流程图的形式展现代码执行的流 ...

  8. 分布式日志:Exceptionless的安装与部署

    安装步骤 首先exceptionless依赖elasticsearch,而elasticsearch需要java环境,所以先安装jdk jdk下载地址:https://www.oracle.com/t ...

  9. SQLMap入门——获取数据库用户的密码

    列出数据库用户的密码 如果当前用户有读取包含用户密码的权限,SQLMap会先列举出用户,然后列出Hash,并尝试破解 python sqlmap.py -u http://localhost/sqli ...

  10. Linux基础守护进程、高级IO、进程间通信

    守护进程(Daemon) 前言 Linux常用于服务器,程序通常不运行在前台.运行于前台的进程和终端关联,一旦终端关闭,进程也随之退出.因为守护进程不和终端关联,因此它的标准输出和标准输入也无法工作, ...