| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1376 人关注过本帖
标题:请问一下指针数据交换的问题
只看楼主 加入收藏
wentaiyou
Rank: 2
等 级:论坛游民
帖 子:68
专家分:17
注 册:2004-12-3
结帖率:100%
收藏
 问题点数:0 回复次数:8 
请问一下指针数据交换的问题
这个是用来把a 和b的值交换机的.以下这个是可以通过.但稍做了一下改动就不行了.不知道问题出在哪里.???

#include "stdio.h"

int swap(int *x, int *y)
{
  int t;        
  t=*x;
  *x=*y;
  *y=t;

}

void main()
{
   int a=10,b=20;
   
printf("交换前: a=%d  b=%d\n",a,b);
   swap(&a,&b);
 printf("交换后: a=%d  b=%d\n",a,b);
}




如果把这里的SWAP换成以下的就不行了.

int swap(int *x, int *y)
{
  int *t;        
  *t=*x;
  *x=*y;
  *y=*t;

}
为什么我把t定义成指针的就不行了哟?应该来说把*x传给*t这个没有错的.请高手指点一下.实在有的迷糊.谢谢!!
搜索更多相关主题的帖子: 数据交换 指针 
2008-09-30 11:27
chenliangbin
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-9-11
收藏
得分:0 
潭老师的书上说得很清楚啊,因为*t是指针变量t所指向的变量。但x中并无确定的值,因此x所指向的单元也是不可预见的
2008-09-30 11:33
一起补天
Rank: 2
等 级:论坛游民
帖 子:73
专家分:61
注 册:2008-9-19
收藏
得分:0 
这个问题以前有人问过,也有人解答过,交换的只是指针地址,而没有交换内容
2008-09-30 11:34
chenliangbin
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-9-11
收藏
得分:0 
写错了,应该是t中并无确定的值,不好意思
2008-09-30 11:35
wentaiyou
Rank: 2
等 级:论坛游民
帖 子:68
专家分:17
注 册:2004-12-3
收藏
得分:0 
int swap(int *x, int *y)
{
  int z=0,*t=&z;
  *t=*x;
  *x=*y;
  *y=*t;

}
如要像这样就可以了.刚看过书上说的了.不过自己就是没明白.哈哈.

假如回到过去.我能做些什么? 还是和现在这样有时间没事情?
2008-09-30 12:01
yyywyr
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2008-5-16
收藏
得分:0 
在TC下编译,有警告,但不影响结果。给*t初始化,就不会出现问题了吧。
2008-09-30 13:40
J_j
Rank: 1
等 级:新手上路
威 望:1
帖 子:100
专家分:0
注 册:2008-8-21
收藏
得分:0 
[bo][un]wentaiyou[/un] 在 2008-9-30 12:01 的发言:[/bo]

int swap(int *x, int *y)
{
  int z=0,*t=&z;
  *t=*x;
  *x=*y;
  *y=*t;

}
.

定义的t指针你都不知道他指向谁,你这么赋值*t=*x;,也就是不知道赋值给谁,故以上的程序就是这个道理。
2008-09-30 14:04
wentaiyou
Rank: 2
等 级:论坛游民
帖 子:68
专家分:17
注 册:2004-12-3
收藏
得分:0 
谢谢.以明白了.感谢大家的帮助.

假如回到过去.我能做些什么? 还是和现在这样有时间没事情?
2008-09-30 14:14
coming
Rank: 1
等 级:新手上路
帖 子:244
专家分:0
注 册:2008-4-20
收藏
得分:0 
指针t的无定义指向会出现错误在严格的编译器里面,比较危险~~~
2008-10-01 11:24
快速回复:请问一下指针数据交换的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020291 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved