求助,一道c语言的问题

satan11puppet 2009-08-19 06:37:36
#include "stdio.h"
swap(int *a,int *b)
{int *t;
t=a; a=b; b=t;
}
main()
{int x=3,y=5,*p=&x,*q=&y;
swap(p,q);
printf("%d%d\n",*p,*q);
}



请问答案为什么是3 5,不是5 3啊?
...全文
161 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiaozongpeng 2009-08-22
  • 打赏
  • 举报
回复
恩,我大体上看懂了,非常感谢啊!!!
lixiongtao24 2009-08-19
  • 打赏
  • 举报
回复
不能收藏就做个记号。
bestwaqh 2009-08-19
  • 打赏
  • 举报
回复
你的swap(p, q)传进去的是地址,但是t=a; a=b; b=t; 交换的是地址不是值,而这个地址是swap函数的局部变量a,b;所以你交换的是a,b的地址,而p,q的地址没有变换

当然也可以用引用,但是引用是c++的语法,c是没有引用这个语法的

如果你想用指针交换两个值

swap(int *a, int *b)
{
int t;
t = *a;
*a = *b;
*b = t;
}

这里可以理解为 (int *a = &p, int *b = &q)
fengyuwuhen1 2009-08-19
  • 打赏
  • 举报
回复
呵呵 懂了就结贴吧
myhder 2009-08-19
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分
satan11puppet 2009-08-19
  • 打赏
  • 举报
回复
我懂了,谢谢哈
终于懂了.....
飞天御剑流 2009-08-19
  • 打赏
  • 举报
回复
t=a; a=b; b=t;只是交换了swap中两个自动指针的值而已,没有交换其指向的内容,因而main中的x和y的值都没有变化。而t=*a; *a=*b; *b=t;则交换了a和b指向的内容,因而x和y的值都变了。
satan11puppet 2009-08-19
  • 打赏
  • 举报
回复
swap(int *a,int *b)
{int t;
t=*a; *a=*b; *b=t;
}
如果像这样,打出来就是5,3
为什么像这样的指针交换,就会影响main函数,而问题中的就不会影响main函数?
satan11puppet 2009-08-19
  • 打赏
  • 举报
回复
饿,这个code我看不明白的,所以我也没看不懂你说的意思,我其实问题很简单
swap(int *a,int *b)
{int t;
t=*a; *a=*b; *b=t;
}
如果像这样,打出来就是5,3
我不明白t=a; a=b; b=t;
这个不也是值对调的意思吗?
jinwei1984 2009-08-19
  • 打赏
  • 举报
回复
swap(int *a,int *b)
{int *t;

printf("%x %x\n", a, b);
printf("%d %d\n", *a, *b);
t=a; a=b; b=t;
printf("%x %x\n", a, b);
printf("%d %d\n", *a, *b); //5 3
}

交换了两个指针,但是指针也是传值,在swap中,对指针的改变不会影响main中,
即在main函数中指针的内容(也就是指针所指向的对象)仍然没改变
poiuy343 2009-08-19
  • 打赏
  • 举报
回复

意思就大概就是这样:


#include<iostream>
using namespace std;
swap(int *a,int *b)
{
cout<<&a<<endl;

}
main()
{int x=3,y=5,*p=&x,*q=&y;
swap(p,q);
cout<<&p;
}



你可以看一下 其实P指针 和你的函数 a指针 自己本身的地址是不一样的,
也就是说 其实是复制了一个新的指向x的指针, 你改变复制后的指针变量的数值对于p,q来说没有做什么。
satan11puppet 2009-08-19
  • 打赏
  • 举报
回复
什么意思?它那个swap函数不是把x,y的值对调了吗?这样的话不就是5,3吗?
jinwei1984 2009-08-19
  • 打赏
  • 举报
回复
指针也是传值。。。 呵呵

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧