首 页 | 新 闻 | Symbian | Android| Windows Mobile | J2ME | 下载中心 | 游戏策划招聘与求职 | 购书指南 | 视频教程
您现在的位置: 开发视界 >> Symbian >> 语言基础 >> 正文
指针和引用的区别
作者:风生水起    文章来源:风生水起    更新时间:2006-8-30 10:25:45

一、
C++中引用和指针的区别
指针初始化的时候,可以指向一个地址,也可以为空。
引用必须初始化为另一个变量.
 int ival = 1024;
 int *pi  = &ival; // a pointer
 int &rval = ival; // a reference

二、
估计很多人在编写C++程序都或多或少的会用到pointer 和 reference这两种东西,但是他们两者到底有什么样的区别和联系呢,相信大多数人是不太了解的,今天我就两者的区别和联系从实际程序的角度来加以区别。
C/C++中的指针其实就是一个变量,和其他类型的变量是一个样子的,它是一个占用四字节的变量(32位机上),它与其他变量的不同之处就在于它的变量值是一个内存地址,指向内存的另外一个地方。reference我的理解就是一个别名,它和linux操作系统上的alias是一个样子的。再者,一个pointer变量可以指向NULL,表示它不指向任何变量地址,但是reference必须在声明的时候就得和一个已经存在的变量相绑定,而且这种绑定不可改变。下面是我写的一段程序来验证pointer与reference的区别和联系的,希望能对大家理解pointer & reference的区别和联系有所帮助:
#include "stdafx.h"
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
 int ival = 1024;
 int *pi  = &ival; // a pointer
 int &rval = ival; // a reference
 int jval = 4096;
 int xval = 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;

 // change the values of the reference and the pointer
 pi = &jval;
 rval = jval;

 // print the changes
 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;

 return 0;
}

一次的执行结果如下:
ival = 1024  &nb

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

相关文章:
遍历文件夹
如何在进程间共享文件句柄
MMI of UIQ (三)
Symbian系统中DLL的冻结
如何改变CEikLabel的颜色
创建Log文件调试Symbian程序
CCoeControl类中Draw()函数的调试
Symbian程序中的观察者模式
 

站点地图 | 加入收藏 | 联系站长 | 广告服务 |
QQ:280529124  Tel:0592-8271361 辽ICP备05021703号