指针互换问题

[复制链接]
1688|4
 楼主| dfsa 发表于 2012-8-26 15:14 | 显示全部楼层 |阅读模式
void swap(int
*p1,int
*p2)
{
int temp;
temp
=*p1;
*p1=*p2;
*p2=temp;
}
想把int temp,变成int *temp,为什么不行?
秋天落叶 发表于 2012-8-26 15:50 | 显示全部楼层
int temp 声明的是int类型,int *temp声明是指向int类型的指针。

temp=*p1;这句是对p1指针进行解引用,返回值是int类型,如果按楼主的意思,temp是个指针变量,这里类型就不匹配了。
yuyuheqiu 发表于 2012-8-26 16:15 | 显示全部楼层
本帖最后由 yuyuheqiu 于 2012-8-29 11:03 编辑

int temp;定义的是一个整型变量,存放的是整形数。而int*temp;定义的是一个指向整型变量的指针变量temp,存放的是变量地址;如果改为*temp,则下面一句应为:*temp=*p1;*p1=*p2;*p2=*temp;但是temp必须有一个指向关系,否则可能破坏数据
weibn 发表于 2012-8-26 21:59 | 显示全部楼层
你的意思是,把p1指向的地址跟p2指向的地地址互换是吧,即p1指向p2所指向的地址,p2指向p1所指向的地址?应该是:
void swap(int *p1, int *p2)
{
    int *temp;
    temp=p1;
   p1=p2;
   p2=temp;
}
*temp=*p1;*p1=*p2;*p2=*temp;//这个是互换指针指向的地址的内容,不是指向互换。
molongkuangshi 发表于 2012-8-27 08:48 | 显示全部楼层
LS正解
您需要登录后才可以回帖 登录 | 注册

本版积分规则

282

主题

2404

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部