C++基础之引用与指针的区别与联系、常引用使用时应注意的问题
#include<iostream>
using namespace std; int main()
{
int a = ;
int& n = a;
cout<<a<<endl;
cout<<n<<endl;
cout<<&a<<endl;
cout<<&n<<endl; return ;
}
程序的运行结果为:

1.一个变量可以有多个别名2.引用必须初始化3.引用只可以在变量初始化的时候引用一次,之后不可以在引用其他的变量(这个想要引用其他的变量几乎是无法实现,反正我没办法)
int main()
{
int d1 = ;
const int & d2 = d1;
d1 = ; // d1改变d2的值也会改变。
// d2 = 6; // 不能给常量(不能被修改的量)赋值
const int d3 = ;
const int & d4 = d3;
// int&d5 = d3;
const int & d6 = ; // 常量具有常性,只有常引⽤可以引⽤常量
double d7 = 1.1;
// int& d8 = d7; //d7是double类型,d8是int,d7赋值给d8时要生成一个临时变量
//也就是说d8引⽤的是这个带有常性的临时变量,所以不能赋值。
const int& d9 = d7;
return ;
}
#include<iostream>
using namespace std;
#include <Windows.h>
struct BigData
{
int array [];
};
void DealBigData1(BigData& x)
{
x.array[] = ;
x.array[] = ;
x.array[] = ;
}
void DealBigData2 (BigData x)
{
x.array []= ;
x.array []= ;
x.array []= ;
}
void TestReference()
{
BigData bd ;
int begin = GetTickCount ();
for (int i = ; i < ; ++i )
{
DealBigData1(bd);
}
int end = GetTickCount ();
cout<<"cost time:" <<end - begin<<endl ;
begin = GetTickCount ();
for (int i = ; i < ; ++i )
{
DealBigData2(bd);
}
end = GetTickCount ();
cout<<"cost time:" <<end - begin<<endl ;
}
int main()
{
TestReference();
return ;
}

int& Add (int d1, int d2)
{
int ret = d1 + d2;
return ret ;
}
void test()
{
int a = , b = ;
int c = Add( a, b );
cout<<"c:" <<c<< endl;
}

int Add1 (int a, int b)
{
int ret = a + b;
return ret;
}
int& Add2(int& a, int b)
{
int ret = a + b;
return ret;
}
void test1()
{
int ret = Add1(, );
cout<<"ret:" <<ret<< endl;
}
void test2()
{
int a = , b = ;
int c = Add2( a, b );
cout<<"c:" <<c<< endl;
}
int main ()
{
test1();
test2();
return ;
}

1.不要返回⼀个临时变量的引⽤。
2. 如果返回对象出了当前函数的作⽤域依旧存在,则最好使⽤引⽤返回,因为这样更⾼效
1. 引⽤只能在定义时初始化⼀次,之后不能改变指向其它变量(从⼀⽽终);指
针变量的值可变。
2. 引⽤必须指向有效的变量,指针可以为空。
3. sizeof指针对象和引⽤对象的意义不⼀样。 sizeof引⽤得到的是所指向的变量的
⼤⼩,⽽sizeof指针是对象地址的⼤⼩。
4. 指针和引⽤⾃增(++)⾃减(--)意义不⼀样。
5. 相对⽽⾔,引⽤⽐指针更安全。
C++基础之引用与指针的区别与联系、常引用使用时应注意的问题的更多相关文章
- c++中的引用与指针的区别
http://blog.csdn.net/lyd_253261362/article/details/4323691 c++中的引用与指针的区别 ★ 相同点: 1. 都是地址的概念: 指针指向一块内存 ...
- C++中引用与指针的区别(详细介绍)
C++中引用与指针的区别(详细介绍) C++中的引用与指针的区别 指向不同类型的指针的区别在于指针类型可以知道编译器解释某个特定地址(指针指向的地址)中的内存内容及大小,而void*指针则只表示一 ...
- c++引用与指针的区别
c++引用与指针的区别 ★ 相同点: 1. 都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址:引用是某块内存的别名. 指针的权威定义: In a declaration T D where ...
- [ZZ]C++中,引用和指针的区别
(1) 引用总是指向一个对象,没有所谓的 null reference .所有当有可能指向一个对象也由可能不指向对象则必须使用 指针. 由于C++ 要求 reference 总是指向一个对象所以 re ...
- Java中到底有没有指针;同时注意引用和指针的区别
Java中引用的作用类似于指针,但是有区别:() (1) 指针必然指向一个内存地址,如果你定义的时候不指定,就会乱指(很可能造成安全隐患)但是引用定义出来后默认指向为空. (2) 指针可 ...
- C、C++中引用与指针的区别
1:引用的和指针在概念上的区别 引用是变量的别名,例如 int m; int &n=m; 引用作为一个别名.它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用 ...
- 引用的作用&引用与指针的区别
引入 C语言中函数有两种传参的方式: 传值和传址.以传值方式, 在函数调用过程中会生成一份临时变量用形参代替, 最终把实参的值传递给新分配的临时变量即形参. 它的优点是避免了函数调用的一些副作用, 但 ...
- C语言学习笔记 (002) - C++中引用和指针的区别(转载)
下面用通俗易懂的话来概述一下: 指针-对于一个类型T,T*就是指向T的指针类型,也即一个T*类型的变量能够保存一个T对象的地址,而类型T是可以加一些限定词的,如const.volatile等等.见下图 ...
- <转>c++引用与指针的区别(着重理解)
★ 相同点: 1. 都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址:引用是某块内存的别名. ★ 区别: 1. 指针是一个实体,而引用仅是个别名: 2. 引用使用时无需解引用(*),指 ...
随机推荐
- linux c++爬虫(一)
int main(int argc, void *argv[]) { ]; ; char ch; ) { switch(ch) { case 'v': version(); break; case ' ...
- Charles安装破解及使用
摘要 在发开过程中,追踪请求和监控请求与返回数据是我们经常会需要的一个需求,在Mac端,Charles是一款非常易用的抓包工具. Mac端的优秀抓包工具--Charles使用 一.简介 Charles ...
- Mac iterm2 linux vim 语言问题
- 开涛spring3(9.2) - Spring的事务 之 9.2 数据库事务概述
9.2.1 概述 Spring框架支持事务管理的核心是事务管理器抽象,对于不同的数据访问框架(如Hibernate)通过实现策略接口 PlatformTransactionManager,从而能支持 ...
- 开涛spring3(5.4) - Spring表达式语言 之 5.4在Bean定义中使用EL
5.4.1 xml风格的配置 SpEL支持在Bean定义时注入,默认使用“#{SpEL表达式}”表示,其中“#root”根对象默认可以认为是 ApplicationContext,只有Applica ...
- Linux系统下安装Mysql5.7.18教程收集分享
本人最近服务器新手入门,需要搭建一个在linux虚拟机上的服务器 第一天再装虚拟机,选的linux系统CentOS,一切顺利. 第二天,要给虚拟机装Mysql,但是需要用到命令行进行安装/操作等,我是 ...
- 一般处理程序+htm C#l简单的增删查改
首先引用两个文件一个dll: 数据库表已创建 首先编写数据读取部分 /// <summary> /// 查询 /// </summary> /// <param name ...
- 初学JVM
最近在读周志明的<深入理解Java虚拟机:JVM高级特性与最佳实践>,从中学到了很多,有些人可能会问为什么我们要学习JVM,他有什么用?在这里我想说一下,并不是这本书是大家都推荐的说有用处 ...
- WAF指纹探测及识别技术
Web应用防护系统(也称:网站应用级入侵防御系统.英文:Web Application Firewall,简称: WAF).利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HT ...
- selenium+python浏览器窗口的切换
1.首先需要知道当前浏览器中有多少个活动的窗口 >>> br.window_handles[u'{075a54ee-3d10-4c76-b56d-b645259bbd54}', u' ...