注册 登录
编程论坛 C++教室

不是不可以建立引用的引用?? 请指导一下下

GBL 发布于 2015-02-04 23:21, 771 次点击
#include<iostream>
using namespace std;
int main()
{
    void sort(int &,int &,int &);
    int a,b,c;
    cout<<"please enter 3integers:";
    cin>>a>>b>>c;
    sort(a,b,c);
    cout<<"sorted order is "<<a<<" "<<b<<" "<<c<<endl;
    return 0;
}

void sort(int &i,int &j,int &k)
{
    void change(int &,int &);
    if(i>j)change(i,j);
    if(i>k)change(i,k);
    if(j>k)change(j,k);
}

void change(int &p,int &q)
{
    int t;
    t=p;
    p=q;
    q=t;
}
6 回复
#2
rjsp2015-02-05 08:46
不知所云
#3
GBL2015-02-05 16:33
回复 2楼 rjsp
我在书上看到注意:不能建立引用的引用。
void sort(int &i,int &j,int &k)
{
    void change(int &,int &);//不是不可以建立引用的引用??
    if(i>j)change(i,j);
    if(i>k)change(i,k);
    if(j>k)change(j,k);
}

void change(int &p,int &q)//这里的函数又再次用引用,不会出错么
{
    int t;
    t=p;
    p=q;
    q=t;
}
#4
fengyiyong2015-02-05 20:53
形参传递的是实参副本,可能是这个原因吧
#5
rjsp2015-02-06 08:49
形参传递的是实参副本 --- 当然不是了,否则 change(i,j); 后i和j不会值调换

int a;
int& b = a; // b 就是 a
int& c = b; // c 就是 b,就是说 c、b、a 是同一个东西
#6
wmf20142015-02-06 09:02
lz的意思大概是指针的指针吧,他main函数调sort传的是指针,sort钓change又传的是指针,不就变成了main里的指针的指针?其实没有变成指针的指针,因为你sort里已经是指针了,你往change里传不再需要加&运算的。
#7
stop12042015-02-10 22:32
将一个引用指向另一个引用..

你那代码都不是
1