打印

指针互换问题

[复制链接]
1102|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dfsa|  楼主 | 2012-8-26 15:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
秋天落叶| | 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;//这个是互换指针指向的地址的内容,不是指向互换。

使用特权

评论回复
5
molongkuangshi| | 2012-8-27 08:48 | 只看该作者
LS正解

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

282

主题

2404

帖子

2

粉丝