(1)非空区别。在任何情况下都不能使用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让他指向一个对象,但是该变量在某些时候也可能不指向任何对象,这是你应该把变量声明为指针,因为这样你可以赋予空值给该变量。相反,如果变量肯定指向一个对象,例如你的设计不允许变量为空,这时你就可以把变量声明为引用。不存在指向空值得引用这个事实意味着使用引用的代码效率比使用指针要高。
(2)合法性区别。在使用引用之前不需要测试它的合法性。相反,指针则应该总是被测试,防止其为空。
(3)可修改区别。指针与引用的另一个重要的不同是指针可以被重新赋值以指向另一个不同的对象。但是引用则是总是指向在初始化时被指定的对象,以后不能改变,但是指定的对象其内容可以改变。
(4)应用区别。总的来说,在以下情况下你应该使用指针:一是你考虑到存在不指向任何对象对象的可能(在这种情况下,你能够设置指针为空),二是你需要能够在不同的时刻指向不同的对象(在这种情况下,你能改变指针的指向)。如果总是指向一个对象并且一旦指向一个对象后就不会改变指向,那么你应该使用引用。
文章出处:http://www.diybl.com/course/3_program/c++/cppxl/20081125/152591.html
参考以下代码理解上面区别:
-
#include<iostream>
-
usingnamespacestd;
-
intmain(intargc,char*argv[])
- {
-
intival=1024;
-
int*pi=&ival;
-
int&rval=ival;
-
intjval=4096;
-
intxval=8192;
-
cout<<"ival="<<ival<<"/t";
-
cout<<"&ival="<<&ival<<"/t";
- cout<<endl;
-
cout<<"pi="<<pi<<"/t";
-
cout<<"&pi="<<&pi<<"/t";
-
cout<<"*pi="<<*pi<<"/t";
- cout<<endl;
-
cout<<"rval="<<rval<<"/t";
-
cout<<"&rval="<<&rval<<"/t";
- cout<<endl;
-
cout<<"jval="<<jval<<"/t";
-
cout<<"&jval="<<&jval<<"/t";
- cout<<endl;
-
- pi=&jval;
- rval=jval;
-
- cout<<endl;
-
cout<<"ival="<<ival<<"/t";
-
cout<<"&ival="<<&ival<<"/t";
- cout<<endl;
-
cout<<"pi="<<pi<<"/t";
-
cout<<"&pi="<<&pi<<"/t";
-
cout<<"*pi="<<*pi<<"/t";
- cout<<endl;
-
cout<<"rval="<<rval<<"/t";
-
cout<<"&rval="<<&rval<<"/t";
- cout<<endl;
-
cout<<"jval="<<jval<<"/t";
-
cout<<"&jval="<<&jval<<"/t";
- cout<<endl;
- cout<<endl;
- *pi=xval;
-
cout<<"pi="<<pi<<"/t";
-
cout<<"&pi="<<&pi<<"/t";
-
cout<<"*pi="<<*pi<<"/t";
- cout<<endl;
-
cout<<"jval="<<jval<<"/t";
-
cout<<"&jval="<<&jval<<"/t";
- cout<<endl;
-
return0;
- }
分享到:
相关推荐
MFC应用程序中指针的应用MFC应用程序中指针的应用MFC应用程序中指针的应用
但在事件驱动和多线程应用中被广泛用于调用回叫函数。在多线程应用中,每个线程都通过指向成员函数的指针来调用该函数。在这样的应用中,如果不用成员指针,编程是非常困难的。 刚遇到这种语法时也许会让你止步不前...
C++指针的几个经典应用,帮助你深入了解C++指针的用法
《C语言》指针综合应用程序设计,该文档主要介绍在C语言中如何使用指针进行应用程序开发,非常有用!
单片机C语言中指针的应用。 本丈主要结合51单片机系统的硬件资源特点, 从指针结构声明,对于不同存储区(片内、片外毅据存储区和 程序存储区)的指针寻址的实现等方面阐述了单片机C语言 才匀针的应用。
软件工程实验中心 实 验 报 告 实验名称:指针应用程序设计(十四) 班 级: 学 号: 姓 名: 实验日期:第 周 星期四 实验地点: 预习情况:优 良 及格 不及格 实验成绩:____________ 指导教师: 【实验目的...
第8章 指针及其应用(6节)
C51单片机C语言编程数组指针和指针数组应用
1。数组与指针区别; 2.数组&指针的相同点。 3.函数参数;
指针数组: 1.a 被初始化为一个由5个int 整数构成的数组。 2.在一个表达式里,*p[] 将被求值为一个int 整数,所以p[]必须指向一个int 整数,而p是一个int 指针数组。指针数组p里的5个元素(5个)指针被初始化为分别...
C_C++指针指针应用详解
了解指针函数,及使用指针函数时的注意事项,以说明
有关于C语言指针的高级应用,帮助初学者更好地理解和应用指针
简简单单的应用代码,网上也容易找到 适合初学者练手看看
在MFC类中各种类的指针的获取和应用,帮助编程人员较快掌握不同类间指针的使用
数据结构 C++ 指针的应用例子集合3.
指针应用 详细介绍c++中指针的概念,解决初学者对指针的困惑。通过实例,展示各种情况的应用
让你不再害怕指针,关于指针应用的技巧应用的讲解与指针的本质深入解析。
通过数组指针进行矩阵运算,以一个实例使读者对指针数组有了进 一步的认识, 进而更加深了对数组指针与指针数组的理解
指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。