首页 > 编程语言 >C++学习04day--引用

C++学习04day--引用

时间:2024-07-31 11:56:40浏览次数:15  
标签:va 变量 -- list C++ int 参数 引用 04day

案例代码:

会发现最后程序执行完,打印X,最后还是100

C++与C语言类似,C++中函数的参数是形式参数,即是实参的拷贝,所以修改的不是实参,所以X不改变,因此我们引入引用

引用:即为某个已存在的变量名,引用变量与被引用变量公用一块内存空间,比如土豆和马铃薯都是同一种东西的不同命名。通过在数据类型后,变量名前添加|“&”符号来定义引用类型

语法:type&name=data;

int&num2=num;\\num2就是num的别名,num2就是num的引用

引用特性 1 引用只是别名,不占内存;和它引用的变量共用同一块内存空间; 2 引用仅在定义时带 &, 使用时普通变量一样使用 , 不含 &; 3 引用必须在创建的时候初始化,一旦引用初始化后,就不能改变 引用所指向的变量,类似于指针常量。 4 引用必须与一个确定的合法内存单元相关联 , 不存在 NULL 引用且 不可以使用; 一个变量可以有多个引用,就像人一样,有可能有多个昵称! 引用使用场景 1.做参数 void change(int &v1,int &v2),在函数被调用时,就相当于传递实参 type&funcName(){}在函数返回一个引用时,则返回一个指向返回的隐式指针,当返回一个引用时,要注意被引用的对象不能超出作用域,所以返回一个对局部变量的引用是不合法的,但是,可以返回一个静态变量的引用, 引用作为返回值 int&func(int &v1){} \\

函数可变参数

可变参数:不知道要使用多少个参数,最带女性的可变参数的就是系统内置的scanf和printf 强制参数:已知要使用多少个参数(普通函数的定义与调用) 可变参数的函数必须至少有一个强制参数,可选参数的类型可以变化。可选参数的数量由强制参数的值决定,或由用来定义可选参数列表的特殊值决定。 对于每一个强制参数来说,函数头部都会显示一个适当的参数,像普通函数声明一样。参数列表的格式是强制性参数在前,后面跟着 一个逗号和省略号(… ),这个省略号代表可选参数。类似给出一个例子,然后加上....表示有多个,不确定

使用

可变参数获取可选参数,必须通过一个va_list的对象,它包含了参数信息,这种类型的对象也称为参数指针,它包含了栈中至少一个参数的位置

va_list类型被定义在头文件stdarg.h中。

va_start 语法 void va_start(va_list argptr, lastparam); argptr 定义好的 va_list 变量。 lastparam 强制参数 va_arg 语法 type va_arg(va_list argptr, type); argptr 定义好的 va_list 变量。 type 可变参数的具体类型。 va_end 语法 void va_end(va_list argptr); argptr 定义好的 va_list 变量。 va_copy 语法 void va_copy(va_list dest, va_list src); dest 目的 va_list 变量。 src 源 va_list 变量。 函数默认参数 定义函数时可以给形参指定一个默认的值,这样调用函数时如果没有给这个形参赋值(没有对应的实参),那么就使用这个默认的值。 void add(int v1, int v2 = 100) 函数返回值,return C++只支持返回一个值,不支持返回多个返回值 如果想要一次返回两个,可以用数组储存,然后返回一个地址,用指针来

标签:va,变量,--,list,C++,int,参数,引用,04day
From: https://blog.csdn.net/IDLLO/article/details/140729806

相关文章

  • 牛逼题
    calcbysmallbasic前言拜谢smallbasic,出的神题,故写题解以记之。题解考虑各个数都在各自的范围内随机取值,并且可以是实数,这就很困难。我们可以将其拆开,得:设\(X=\sum\lfloorx_i\rfloor,Y=\lfloor\sum(x_i)\rfloor\)。\[(X+Y)^k=\sum_{i=0}^k\dbino......
  • 企业认缴和实缴的区别
    企业认缴和实缴的区别在企业注册和经营过程中,认缴和实缴是两个重要的概念,它们各自具有不同的含义、性质、法律责任及适用场景。一、概念与性质认缴认缴是指股东在注册公司时,按照公司章程的约定,承诺在一定期限内分期或一次性缴纳其应出资的额度。这种出资承诺并不要求股......
  • Access denied for user 'root'@'localhost' (using password: YES)
    1.启动项目报连接数据库被拒绝![](https://img2024.cnblogs.com/blog/3413037/202407/3413037-20240731113834004-615120424.png)2.用数据库连接工具也是提示同样错误![](https://img2024.cnblogs.com/blog/3413037/202407/3413037-20240731113958582-2045494132.png)3.查看my......
  • 基于JSP的房屋租赁系统
    你好,我是计算机专业的学姐,专注于系统开发。如果你对房屋租赁系统感兴趣或有相关开发需求,欢迎私信联系我。开发语言:Java数据库:MySQL技术:JSP技术+B/S架构工具:Myeclipse、浏览器(如360浏览器、谷歌浏览器、QQ浏览器等)系统展示首页管理员登录界面用户注册界面房屋......
  • P2163 [SHOI2007] 园丁的烦恼 题解
    题目传送门题目大意:在一个平面直角坐标系上,给定\(n\)个点的坐标\((x,y)\),\(m\)次询问,每次询问一个矩形范围内的点的数量,此矩形用\(\{a,b,c,d\}\)来描述,其中\((a,b)\)为左下角,\((c,d)\)为右上角。思路:不难将题目转化为:给定一个长度为\(n\)的序列,序列中的每个元......
  • 基于Java的智能停车场管理系统
    你好,我是计算机学姐码农小野!如果你对智能停车场管理系统感兴趣或有相关需求,欢迎私信联系我。开发语言:Java数据库:MySQL技术:JSP技术+JAVA+B/S架构工具:浏览器(如360浏览器、谷歌浏览器、QQ浏览器等)、数据库(如MySQL)系统展示首页用户注册界面登录界面车位信息界......
  • 基于JSP技术的艺诚美业管理系统
    开头语:你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。开发语言:Java数据库:MySQL技术:JSP+JSPBeans工具:IDEA/Eclipse、Navicat、Maven系统展示首页管理员后台员工打卡管理技师预约管理摘要艺诚美业管理系统的开发旨在适应现代社会对信息科学化管理的......
  • CF1997(edu168)题解 A-F
    A.StrongPassword注意到最大效果是在两个相同字符之间插入一个不同的,贡献为3。否则在一开始插入一个和首位不同的,贡献为2。#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;voidsolve(){strings;cin>>s;boolok=0;for(inti......
  • 有谁知道如何在 ROS 中使用 python 开发赛车模拟编码?
    在模拟中,主要目标是让自动驾驶汽车读取AprilTags并根据标牌提供的说明进行导航。AprilTags是一种基准标记,可作为重要的视觉提示,传达有关汽车周围环境的信息,例如方向、速度限制和其他关键路标。汽车的车载视觉系统应该检测这些标签,解码嵌入的数据,并相应地调整其运动。这包括在......
  • 使用宝塔对程序、依赖、配置文件分离的springboot项目进行部署运行
    spingboot中的依赖:<plugins><!--上线部署JAR启动分离依赖lib和配置--><!--打包jar--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId>......