【Cpp】考点·引用

一、引用

引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。

引用的声明方法:类型标识符 &引用名 = 目标变量名;

int a;

int &ra = a;

(1)&在此不是求地址运算,而是起标识符作用。

(2)类型标识符是指把目标变量的类型。

(3)声明引用时,必须同时对其进行初始化。

(4)引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名。且不能再把该引用名作为其他变量名的别名。

(5)生命一个引用,不是定义了一个新变量,它只表示该引用名是目标变量名的一个别名,它本身不是一个数据类型,因此引用本身不占据存储单元,系统也不给引用分配存储单元。

(6)不能建立数组的引用。数组是一个由若干个元素组成的集合,所以无法建立一个数组的别名。

二、应用

1、引用作为参数

引用的一个重要作用就是作为函数的参数。


 1 #include<iostream>
2
3 using namespace std;
4
5 void swap(int p1, int p2)
6 {
7 int p;
8 p = p1;
9 p1 = p2;
10 p2 = p;
11 }
12
13 void Trueswap(int &p1, int &p2)
14 {
15 int p;
16 p = p1;
17 p1 = p2;
18 p2 = p;
19 }
20
21 int main()
22 {
23 int a, b;
24 cin >> a >> b;
25 swap(a,b);
26 cout << a << ‘,‘ << b << endl;
27 Trueswap(a,b);
28 cout << a << ‘,‘ << b << endl;
29 }

其输出为

a,b

b,a

从上面的演示函数中可以看出,当引用作为参数时函数能够直接修改变量,而不是传值调用。

【Cpp】考点·引用,布布扣,bubuko.com

时间: 2024-10-12 17:07:28

【Cpp】考点·引用的相关文章

解决VS2010子目录中的.cpp文件引用上一级目录的stdafx.h找不到定义的问题

Source目录 |-- stdafx.h |--Util目录 |--Util.h |--Util.cpp 现在的发现Util.cpp各种变量的定义全是红色波浪线,找不到定义,但是却能够编译过 问题就出在Util.cpp中的第一行 #include "stdafx.h" 其实该路径是查找不到对应文件的,因此要将stdafx.h引入到工程当中来,具体方法是: Properties -> Configuration Properties -> C/C++ -> Gener

【转载】C++应用引用计数技术

原帖:http://www.cnblogs.com/chain2012/archive/2010/11/12/1875578.html 因为Windows的内核对象也运用了引用计数,所以稍作了解并非无用. 引用计数可以让多个对象共享一个数据,而且免除了跟踪控制权的负担,让对象自己管理自己,当再没有被使用时可以自动删除,也算是一种简易的垃圾回收机制. 另一方面,如果有N多个相同的对象:○=○=○=○=...=○=○ 这样的做法是臃肿且无聊的,所以一个好的做法就是让对象可以共享这一个数据.既可以节省

内存泄露检测工具

VS2008的内存泄露检测功能有限,使用也有些局限性.今天因工作时间紧迫,工程繁琐,我最终选择了VLD(Visual Leak Detector).这个工具使用起来十分简单,只需要: (1)下载安装vld.安装过程中可以发现vld安装向导提示关闭VS2008同时还将vld的头文件include目录路径.vld的库文件lib目录设置好了,简直太贴心.vld下载地址:http://vld.codeplex.com/ (2)在待检测的工程中添加头文件#include "vld.h"(我添加在

C、C++变量auto,static,register,extern类型

auto: 推导类型变量:/Zc:auto[-] compiler option tells the compiler how to use the auto keyword to declare variables.' data-guid="0be6182f1ca27bd1ea991f3f06584d3b">编译器选项指示编译器如何使用 auto 关键字来声明变量. /Zc:auto, the compiler deduces the type of the declared

上手Caffe(一)

@author:oneBite 本文记录编译使用caffe for windows 使用环境 VS2013 ultimate,win7 sp1,caffe-windows源码(从github上下载caffe的windows分支,下载解压之后,不要改变原有的目录结构,因为solution rebuild时会使用文件的相对路径) 编译过程 根据需要修改caffe-windows\caffe-windows\windows\CommonSettings.props.本次编译生成不使用GPU和CuDNN

C++模板类注意事项

最近使用C++模板,虽然工作几年了,但是模板用的很少,确切的说自己实现的机会很小. 昨天写了一个代码maxheap.h 中实现了类模板的声明,我将实现写在maxheap.cpp中, 当在main.cpp中引用maxheap中的接口时,提示链接错误.网上提供了几个解决方案, 第一种方式是将maxheap.h和maxheap.cpp包含在某个.h文件中,这样在main函数中 包含这个.h即可.第二种方式叫分离模式,我没看,觉得没必要搞得那么复杂.第三种方式 是我最看好的方式,就是将模板类的实现也放在

C++基础之全局变量

C++的水比較深,之前我一直以为C++的全局变量会像其它语言一样,很easy仅仅要在头文件里,定义一个变量就可以,比方以下的test.h: #ifndef _TEST_H #define _TEST_H int a = 10; #endif 我都加上头文件保护符,总应该没有多重包括的问题了吧?没想到多个cpp文件引用同个头文件还是狂报错:error LNK2005 a 已经在 xx.obj中定义. 又拿起<C++ Primer>看了下.发现正确的应该这么写: test.h #ifndef _T

不可或缺 Windows Native (12) - C++: 引用类型

[源码下载] 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 引用类型 示例CppReference.h #pragma once #include <string> using namespace std; namespace NativeDll { class CppReference { public: string Demo(); }; } CppReference.cpp /* * 引用类型 * * 引用也可以称之为“别名” * * 注: * 1.声明引

浅谈__declspec(selectany)该何时用

__declspec是一个Microsoft Visual C++特定的编译器属性开关.括号中指 明的是哪一个属性生效.关于__declspec的其他属性可以百度"__declspec msdn" 查看微软的官方帮助.也可以参看博客中转载的文章. 言归正传.__declspec(selectany)在MSDN中的说明是这样的: Tells the compiler that the declared global data item (variable or object) is a