读书人

新手指针有关问题

发布时间: 2013-01-01 14:04:18 作者: rapoo

新手指针问题
我想知道调用swap函数之后为什么输出iv1 iv2不发生交换的
#include <iostream>
using namespace std;
void swapref(int *p1,int *p2);
int main()
{
cout<<"------------------------------"<<endl;
int iv1=888;
int *pointer_1;
pointer_1=&iv1;
cout<<"iv1 ="<<iv1<<endl;
cout<<"*pointer_1="<<*pointer_1<<endl;
cout<<"&iv1 ="<<&iv1<<endl;
cout<<"pointer_1 ="<<pointer_1<<endl;
cout<<"------------------------------"<<endl;
int iv2=666;
int *pointer_2;
pointer_2=&iv2;
cout<<"iv2 ="<<iv2<<endl;
cout<<"*pointer_2="<<*pointer_2<<endl;
cout<<"&iv2 ="<<&iv2<<endl;
cout<<"pointer_2 ="<<pointer_2<<endl;
cout<<"------------------------------"<<endl;
swap(pointer_1,pointer_2);
cout<<"iv1 ="<<iv1<<endl;
cout<<"iv2 ="<<iv2<<endl;
cout<<"*pointer_1="<<*pointer_1<<endl;
cout<<"*pointer_2="<<*pointer_2<<endl;
cout<<"pointer_1 ="<<pointer_1<<endl;
cout<<"pointer_2 ="<<pointer_2<<endl;
return 0;
}
void swap(int *p1,int *p2) //相当于*p1=pointer_1指向iv1, *p2=pointer_2指向iv2
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}

[解决办法]
当前此处所调用的swap非你写的swap。 把你的swap放到int main之前。
[解决办法]
你的参数这样写:void swap(int *&p1,int *&p2)

读书人网 >C++

热点推荐