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

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

 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. Ansible执⾏速度优化

    个人名片: 因为云计算成为了监控工程师‍ 个人博客:念舒_C.ying CSDN主页️:念舒_C.ying 优化⼀: 开启SSH长连接 Ansible模式是使⽤SSH和远程主机进⾏通信, 所以Ansi ...

  2. 基于Sklearn机器学习代码实战

    LinearRegression 线性回归入门 数据生成 为了直观地看到算法的思路,我们先生成一些二维数据来直观展现 import numpy as np import matplotlib.pypl ...

  3. Linux deb系统 nginx 配置解析php

    如果你是root用户可以不加sudo 首先安装php php-fpm nginx sudo apt-get install php php-fpm nginx -y nginx 是一个轻量级的http ...

  4. 社论 22.10.9 优化连续段dp

    CF840C 给定一个序列 \(a\),长度为 \(n\).试求有多少 \(1\) 到 \(n\) 的排列 \(p_i\),满足对于任意的 \(2\le i\le n\) 有 \(a_{p_{i-1} ...

  5. 【十次方微服务后台开发】Day02:加密与JWT鉴权、微服务注册中心、配置中心、熔断器、网关、消息总线、部署与持续集成、容器管理与监控Rancher、influxDB、grafana

    一.密码加密与微服务鉴权JWT 1.BCrypt密码加密 Spring Security 提供了BCryptPasswordEncoder类,实现Spring的PasswordEncoder接口使用B ...

  6. 这玩意也太猛了!朋友们,我在此严正呼吁大家:端好饭碗,谨防 AI!

    你好呀,我是歪歪. 最近几天大火的 ChatGPT 你玩了吗? 如果你不知道它是个什么东西,那么我让它给你来个自我介绍: 说白了,就是一个可以对话的人工智能. 我开始以为就是一个升级版的"小 ...

  7. Kubernetes(k8s)存储管理之数据卷volumes(五):动态制备-存储类StorageClass

    目录 一.系统环境 二.前言 三.静态制备和动态制备 四.存储类StorageClass 4.1 存储类StorageClass概览 4.2 StorageClass 资源 五.创建存储类Storag ...

  8. CH334、CH335USB2.0Hub芯片(更新ing)

    USB HUB又称USB集线器,主要用于USB主机端口扩展,广泛应用于计算机,笔记本,及周边应用.CH334.CH335是符合 USB2.0 协议规范的高性能MTT 4 端口 USB2.0  HUB  ...

  9. [深度学习] Pytorch模型转换为onnx模型笔记

    本文主要介绍将pytorch模型准确导出为可用的onnx模型.以方便OpenCV Dnn,NCNN,MNN,TensorRT等框架调用.所有代码见:Python-Study-Notes 文章目录 1 ...

  10. 模型驱动设计的构造块(下)——DDD

    3. 领域对象的生命周期 每个对象都有生命周期,如下图所示.对象自创建后,可能会经历各种不同的状态,直至最终消亡--要么存档,要么删除.当然很多对象是简单的临时对象,仅通过调用构造函数来创建,用来做一 ...