关于c++的引用问题

来源:百度知道 编辑:UC知道 时间:2024/05/09 21:02:10
#include <iostream>
using namespace std;
int main()
{
void swap(int &,int &);
int i=3,j=5;
swap(i,j);
cout<<"i="<<i<<" "<<"j="<<j<<endl;
return 0;
}
void swap(int &a,int &b)
{
int temp;
temp=a;
a=b;
b=temp;
}

结果是:i=3 j=5
这是引用中的问题,我知道用指针也能解决

楼主的程序本没什么错误,C++中函数是可以通过引用调用的,函数调用时 将实参值传递给形参,实际上是被调函数使用了实参的别名,因而形参值的改变本质上就是对实参的改变!

可是楼主在main函数中声明了swap形式是这样的,void swap(int &,int &); 这样就错误了!应该在main前声明,因为系统本身法就有
void swap(int a,int b)这样的函数 如故在main函数中声明你自己声明的void swap(int &,int &)其实是无效的,系统就会默认调用void swap(int a,int b)了, 所以结果不出现你的结果.

#include <iostream>
using namespace std;
void swap(int &a,int &b );
int main()
{

int i=3,j=5;
swap(i,j);
cout<<"i="<<i<<" "<<"j="<<j<<endl;
return 0;
}
void swap(int &a,int &b)
{
int temp;
temp=a;
a=b;
b=temp;
}
这样就可以了!
一楼的回答确实可以这样 用指针调用 但我想用指针调用应该不是楼主的本意!

我是软件工程专业2年级的学生!

那个swap函数的参数是两个变量的地址.你是想通过改变地址来实现a,b的交换吗?
但是看swap函数,
里面是这么写的
int temp;
temp=a;
a=b;
b=temp;

这样以来那个地址&a,&b,都没有用上了。在执行完了swap函数的时候,没有任何返回值,并且函数的参数不是指针,原来的i,j不发生变化。