电脑爱好者,提供IT资讯信息及各类编程知识文章介绍,欢迎大家来本站学习电脑知识。 最近更新 | 联系我们 RSS订阅本站最新文章
电脑爱好者
站内搜索: 
当前位置:首页>> C++/VC>>对前面对于引用的c++入门教程的补充说明之一:

对前面对于引用的c++入门教程的补充说明之一

来源:远方网络 | 2006-1-6 | (有1695人读过)


//程序作者:管宁
//站点: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++/VC热门文章排行
网站赞助商
购买此位置

 

关于我们 | 网站地图 | 文档一览 | 友情链接| 联系我们

Copyright © 2003-2024 电脑爱好者 版权所有 备案号:鲁ICP备09059398号