[求助]指针问题
#include <iostream.h>void swap(int *p1,int *p2)
{
int *p;
p=p1;
p1=p2;
p2=p;
}
void main ()
{
int x=20,y=10;
swap(&x,&y) ;
cout<<x<<","<<y;
}
输出的结果为什么是20,10呀?怎么不是10,20呀?
指针变有两个基本运算符:* 与 &
前者代表:取指针的值,后者代表取另一个变量的地址,
你的意思其实是要交换两个变量的值,
但是你想通指针来实现,实际上如果要用子函数来实现这个功能,也只能通过
传递地址变是的方式来实现。
将地址变量传过去以后(要做的是通过地址来交换值的内容,而并不是来交换变量)
二楼可能有点小问题,p没有初始化
#include <iostream.h>
void swap(int *p1,int *p2)
{
int p;
p=*p1;
*p1=*p2;
*p2=p;
}
void main ()
{
int x=20,y=10;
swap(&x,&y) ;
cout<<x<<","<<y;
}
#include <iostream.h>
void swap(int *p1,int *p2)
{
int *p=new int ;
*p=*p1;
*p1=*p2;
*p2=*p;
}
void main ()
{
int x=20,y=10;
swap(&x,&y) ;
cout<<x<<","<<y;
}
或者这样写也可以的
#include <iostream.h>
void swap(int *p1,int *p2)
{
int *p=new int ;
p=p1;
p1=p2;
p2=p;
cout<<p1<<","<<p2<<endl;
}
void main ()
{
int x=20,y=10;
swap(&x,&y) ;
}
因为你那个程序交换的只是两个指针指向的位置,而不是x,和y的值,要想交换值就用*p代替p
[此贴子已经被作者于2007-10-6 17:48:21编辑过]