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. 引用使用时无需解引用(*),指 ...
随机推荐
- js事件小结
首先事件绑定分为2种方法 一种为"DOM0级"方法,这里我理解为事件指定 var oDiv = document.getElementById("div1"); ...
- struts2.1.6教程十、类型转换
建立struts2conversion项目,并搭建好struts2的基本开发环境 1.基于Action的直接属性转换 建立t.jsp页面,内容如下: <s:form action="p ...
- java日期工具类(Long型,Date型,yyyyMMdd型)等
import java.sql.Timestamp; import java.text.ParsePosition; import java.text.SimpleDateFormat; import ...
- 全局精确流量调度新思路-HttpDNS服务详解
但凡使用域名来给用户提供服务的互联网企业,都或多或少地无法避免在有中国特色的互联网环境中遭遇到各种域名被缓存.用户跨网访问缓慢等问题.那么对于腾讯这样的域名数量在10万级别的互联网公司来讲,域名解析异 ...
- Venn Diagram Comparison of Boruta, FSelectorRcpp and GLMnet Algorithms
Feature selection is a process of extracting valuable features that have significant influence ondep ...
- 1.Node.js 接入微信公众平台开发
一.写在前面的话 Node.js是一个开放源代码.跨平台的JavaScript语言运行环境,采用Google开发的V8运行代码,使用事件驱动.非阻塞和异步输入输出模型等技术来提高性能,可优化应用程 ...
- 关于STM32 IAP
转眼间天亮了...... 然后就想起了一个朋友QQ的个性签名:年轻人总是要为一些自己认为有意义的事情而废寝忘食,通宵达旦,直至白发方休........ 对了这篇文章一定会介绍的很详细,请细嚼慢咽... ...
- shell脚本中$参数的介绍
$$Shell本身的PID(ProcessID)$!Shell最后运行的后台Process的PID$?最后运行的命令的结束代码(返回值)$-使用Set命令设定的Flag一览$*所有参数列表.如&quo ...
- iOS架构设计-URL缓存
概览 缓存组件应该说是每个客户端程序必备的核心组件,试想对于每个界面的访问都必须重新请求势必降低用户体验.但是如何处理客户端缓存貌似并没有统一的解决方案,多数开发者选择自行创建数据库直接将服务器端请求 ...
- Innobackupex全备恢复(原理、演示)
一. Innobackupex恢复原理 After creating a backup, the data is not ready to be restored. There might b ...