读书人

对别号传递的不理解

发布时间: 2012-09-22 21:54:54 作者: rapoo

对别名传递的不理解
为什么别名能够实现值得正确的传递。这个为什么不能理解为取地址符号呢??
#include <iostream>
using namespace std;
void swap(int &a, int &b)
{
int c=0;
cout<<"交换前"<<a<<"\t"<<b<<endl;
c=a;
a=b;
b=c;
cout<<"交换后"<<a<<"\t"<<b<<endl;
}
void main()
{
int f,g;
f=4,g=6;
cout<<"交换前"<<f<<"\t"<<g<<endl<<endl;
swap(f,g);
cout<<endl<<"交换后"<<f<<"\t"<<g<<endl;

}

[解决办法]
别名顾名思义就是给别量取了另外一个名字,相当于绰号,与指针不同,别名不是定义了一个变量,不会分配一个存储单元,别名相当于一个变量有2个名字。而指针则是定义了一个变量,这个变量的值是一个地址。
[解决办法]
我觉得就是忽略了拷贝 直接传地址过去 底层也是用指针实现
[解决办法]
所谓别名,你不要留意在它的字面意思上“Another Name”,

就像楼主你,叫XXX,我撑你为楼主,楼主,和XXX都是你本人,

我说楼主是混蛋,和XXX是混蛋,你肯定不高兴。。。

问题在于它们指的是同一个东西。

Sorry啊。。。心直口快的。。。
[解决办法]
首先,为什么引用能够实现值的正确传递?
因为引用本质上是个常量指针,用指针能够实现在函数内更改函数外的变量,用引用也可以

其次,为什么不能理解成取地址
&a的确可以理解成取a的地址,int &a怎么理解?&a的结果返回a所在的内存地址,假如是5,那int 5你觉得应该怎么理解?
每一行源代码都必定对应语言标准中的唯一一个理解,如果找不到适合的理解或者适合的理解多于一个,那么编译器就会报错。语言标准语法规定不需要我跟你说,那该你自己去学去查,我只回答你的问题:如果&理解成取地址符,那么int &a就无法解释,因此&不能理解为取地址符。

读书人网 >C++

热点推荐