c++学习笔记之引用
引用是 C++ 的新增内容,在实际开发中会经常使用;C++ 用的引用就如同C语言的指针一样重要,但它比指针更加方便和易用,有时候甚至是不可或缺的。
同指针一样,引用能够减少数据的拷贝,提高数据的传递效率。
引用(Reference)是 C++ 相对于C语言的又一个扩充。引用可以看做是数据的一个别名,通过这个别名和原来的名字都能够找到这份数据。引用类似于 Windows 中的快捷方式,一个可执行程序可以有多个快捷方式,通过这些快捷方式和可执行程序本身都能够运行程序;引用还类似于人的绰号(笔名),使用绰号(笔名)和本名都能表示一个人。
引用的实例:
#include <iostream>
using namespace std; int main() {
int a = ;
int &r = a;
cout << a << ", " << r << endl;
cout << &a << ", " << &r << endl; return ;
}
运行结果:
99, 99
0x28ff44, 0x28ff44
注意,引用在定义时需要添加&
,在使用时不能添加&
,使用时添加&
表示取地址。下面是一个例子,注意理解指针和引用的用法:
#include<iostream>
using namespace std; int main(){
int v1;
char v2[];
cout<<"v1的内存地址:"<<&v1<<endl;
cout<<"v2的内存地址:"<<&v2<<endl; int val=;
int *pval;
pval=&val;
cout<<"val的值:"<<val<<endl;
cout<<"val的内存地址:"<<pval<<endl;
cout<<"val的值:"<<*pval<<endl;
cout<<"val的内存地址::"<<*&pval<<endl;
cout<<"val的值"<<*&val<<endl; }
运行结果:
v1的内存地址:0x6dfeec
v2的内存地址:0x6dfee2
val的值:10000
val的内存地址:0x6dfedc
val的值:10000
val的内存地址::0x6dfedc
val的值10000
c++学习笔记之引用的更多相关文章
- C++学习笔记2——引用
1. int ival = 1; int &refVal = ival; //引用必须初始化,且类型严格匹配 2. int ival = 1; int &refVal = ival; ...
- (C/C++学习笔记) 十三. 引用
十三. 引用 ● 基本概念 引用: 就相当于为变量起了一个别名(alias), △与指针不同的是它不是一个数据类型 通过引用我们可以间接访问变量,指针也能间接访问变量,但引用在使用上相对指针更安全. ...
- Java学习笔记-方法引用
方法引用(Method Reference) 上一篇中记录了Lambda表达式,其可以创建匿名方法.当Lambda表达式只是调用一个存在的方法时,可以采用方法引用(JDK8具有的特性).如下: pub ...
- C++ 学习笔记之 引用
一.定义: 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样. 二.用法: 基本用法 例如: int & a = b; 引用作为函数返回值 先看一个例子: #inclu ...
- Java学习笔记day03_引用数据类型
1.引用数据类型 步骤: 1. 导包 2. 创建引用类型变量 类型 变量名 = new 类型名(); 3. 使用数据类型的功能 变量名.功能名(); 如Scanner类: import jav ...
- c#学习笔记01——引用&类
数据类型 值类型 bool 布尔值 True 或 False False byte 8 位无符号整数 0 到 255 0 char 16 位 Unicode 字符 U +0000 到 U +ffff ...
- c++ 学习笔记 c++ 引用C库注意点:#ifdef __cplusplus 倒底是什么意思?
时常在cpp的代码之中看到这样的代码: #ifdef __cplusplus extern "C" { #endif //一段代码 #ifdef __cplusplus } #en ...
- HTML学习笔记 iframe引用页面按列(针对target打开方式解释) 第九节 (原创)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- CMake学习笔记六-引用cmake文件
include(${CMAKE_CURRENT_SOURCE_DIR}/../Share/share.cmake)
随机推荐
- codeforces#999 E. Reachability from the Capital(图论加边)
题目链接: https://codeforces.com/contest/999/problem/E 题意: 在有向图中加边,让$S$点可以到达所有点 数据范围: $ 1 \leq n \leq 50 ...
- UVA 11174 Stand in a Line,UVA 1436 Counting heaps —— (组合数的好题)
这两个题的模型是有n个人,有若干的关系表示谁是谁的父亲,让他们进行排队,且父亲必须排在儿子前面(不一定相邻).求排列数. 我们假设s[i]是i这个节点,他们一家子的总个数(或者换句话说,等于他的子孙数 ...
- Zookeeper系列(十一)zookeeper的Leader选举详解(核心之一)
作者:leesf 掌控之中,才会成功:掌控之外,注定失败. 出处:http://www.cnblogs.com/leesf456/p/6107600.html尊重原创,奇文共欣赏: 一.前言 前 ...
- Mysql索引查询失效的情况
首先,复习一下索引的创建: 普通的索引的创建: CREATE INDEX (自定义)索引名 ON 数据表(字段); 复合索引的创建: CREATE INDEX (自定义)索引名 ON 数据 ...
- 【零基础】speech driven animation中文安装使用指南
注:原项目名叫Speech-Driven Animation,所以我这里就简称为SDA 开局一张图,后面自动编 相信前段时间爆火的DeepNude(AI扒衣)让很多人惊掉了大牙,AI还能干这个?!如果 ...
- 外网访问内网的FTP服务器
转自 外网访问内网的FTP服务器 首先感谢作者给出的总结,原文是介绍Serv-U的,我针对FileZilla Server进行了稍微修改,仅看操作可直接跳到分割线后第3部分. 1. 背景简介最近研究如 ...
- C++ STL——string和vector
目录 一 STL基本概念 二 string容器 三 vector容器 3.1 vector动态增长原理 3.2 vector构造函数 3.3 vector常用赋值操作 3.4 vector大小操作 3 ...
- mysql 如何给大表添加字段
1. 能不加字段就不要加, 能不修改字段就不要修改, 能不删除字段就不要删除, 等等为什么要删除字段呢? 如果没事,不要蛋疼的找事. 实际上,我们那次更新失败后, 我们并没有增加那个字段, 然后我们一 ...
- java.lang.UnsupportedClassVersionError: com/mysql/jdbc/Driver : Unsupported major.minor version 52.0
版本为: jdk1.7.0_80 mysql-connector-java-5.1.46-bin.jar 解决办法: 升级JDK或者降级MySQL Connector/J为mysql-connecto ...
- Linux显存占用无进程清理方法(附批量清理命令)
在跑TensorFlow.pytorch之类的需要CUDA的程序时,强行Kill掉进程后发现显存仍然占用,这时候可以使用如下命令查看到top或者ps中看不到的进程,之后再kill掉: fuser -v ...