
对前面对于引用的c++入门教程的补充说明
发布时间:2006-05-05 19:01:23 来源:网易学院 网友评论 0 条
//程序作者:管宁
//站点:www.cndev-lab.com
//所有稿件均有版权,如要转载,请务必著名出处和作者
#include <iostream>
#include <string>
using namespace std;
void main(int argc,char* argv[])
{
int a=10;
int b=20;
int &rn=a;
cout<<rn<<"|"<<a<<endl;
cout<<&rn<<"|"<<&a<<endl;//c++中是无法取得应用的内存地址的,取引用的地址就是取目标的地址!
rn=b;//把引用指向另一个目标----变量b
cout<<&rn<<"|"<<&a<<"|"<<&b<<endl;
rn=100;//试图改变b的值
cout<<a<<"|"<<b<<endl;//输出修改后的结果结果
cin.get();
}
由于引用本身就是目标的一个别名,引用本身的地址是一个没有意义的值,所以在c++中是无法取得应用的内存地址的,取引用的地址就是取目标的地址,c++本身就根本不提供获取引用内存地址的方法!
引用一单初始化,就不在能够被指向其它的目标,虽然编译不会出错,但操作是不起作用的,实际上还是指向最先指向的目标!
上面代码中的rn=b实际在计算机看来就是a=b,所以修改的还是a的值!
//程序作者:管宁
//站点:www.cndev-lab.com
//所有稿件均有版权,如要转载,请务必著名出处和作者
#include <iostream>
#include <string>
using namespace std;
void main(int argc,char* argv[])
{
int a=10;
void &rn=a;// 错误的,void即无类型的类型
int a[100];
int &ra[100]=a;//错误,不能声明引用数组
cin.get();
}
上面的两错误要记住引用的特性,void修饰是不能够声明引用的,引用是不能够声明数组的,即不能够声明引用数组!
下面我们要说一下,也是补充中最重要最需要掌握的内容,也是对传统函数操作的内存状态的一个补充学习!
下面我们来看一个例子
//程序作者:管宁
//站点:www.cndev-lab.com
//所有稿件均有版权,如要转载,请务必著名出处和作者
#include <iostream>
#include <string>
using namespace std;
float c;
float test(float,float);
void main(int argc,char* argv[])
{
float pn=test(3.0f,1.2f);
cout<<pn;
cin.get();
}
float test(float a,float b)
{
c=a*b;
return c;
}
在上面的代码中我们可能我们可能以为函数返回的就是c变量,呵呵,这么想可能就错了,普通情况下我们在函数内进行普通值返回的时候在内存栈空间内其实是自动产生了一个临时变量,它是返回值的一个副本一个copy,函数在return的时候其实是return的这个临时产生的副本!
推荐阅讯
- C++运算符重载赋值运算符
- c++类的多态与虚函数的使用
- C/C++中枚举类型(enum)的入门教程
- 基于VC++的OpenGL编程讲座之曲线和曲面
- c++类的多重继承与虚拟继承
- VC编程轻松获取局域网连接通知
- Windows Sockets 示例列表
- VC中利用人工智能解决八迷宫问题
- Windows Sockets:使用 CAsyncSocket 类
- 内存陷阱 驯服C++中的野指针
阅读排行
- 1.Borland 发布C++ Builder 2006 RAD 环境
- 2.C/C++程序员应聘常见面试题深入剖析
- 3.Visual C++常用数据类型转换详解
- 4.C++中的 static 关键字
- 5.利用VC++实现局域网实时视频传输
- 6.浅谈C/C++内存泄漏及其检测工具
- 7.英国投票否决C++/CLI 微软强攻ISO标准受挫
- 8.VC++下用MSComm控件实现串口通讯
- 9.伪随机数生成及在VC++中的实现
- 10.VC++编程实现对波形数据的频谱分析
专题教程
- 大话G游 专题:手机病毒揭密
- ARP攻击防范与解决方案 路由故障处理手册
- Picasa中文版_Picasa教程 专题:清除流氓软件
- Firefox专题 seo搜索引擎优化专区
- 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
