| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1258 人关注过本帖
标题:关于一个函数功能的问题
只看楼主 加入收藏
韩54521风
Rank: 4
等 级:业余侠客
帖 子:75
专家分:212
注 册:2011-6-11
结帖率:100%
收藏
已结贴  问题点数:50 回复次数:32 
关于一个函数功能的问题
有以下程序:
#include"stdio.h"
void fun(int *a,int *b)
{ int *c;
c=a;a=b;b=c;
}
main()
{
int x=3,y=5,*p=&x,*q=&y;
fun(p,q);printf("%d,%%d,",*p,*q);
fun(&x,&y);printf("%d,%d\n",*p,*q);
}
程序运行后的结果是()
A3,5,5,3   B3,5,3,5     C5,3,3,5      D5,3,5,3
为何选B

void fun(int *a,int *b)
{ int *c;
c=a;a=b;b=c;
}
这个函数的功能是什么呢?是不是指针的地址发生转变但是指针所指的地址内的数值没有变化啊,请求大侠帮忙。。。。。。

[ 本帖最后由 韩54521风 于 2011-8-5 20:39 编辑 ]
搜索更多相关主题的帖子: include 
2011-08-04 18:15
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:5 
如果答案是 B ,&p 这里应该是 &a

指针的地址没有发生变化(而且也永远不会变,会改变的只有指针所指向的地址),改变的只有 fun() 的形参 a, b 的值
2011-08-04 18:22
韩54521风
Rank: 4
等 级:业余侠客
帖 子:75
专家分:212
注 册:2011-6-11
收藏
得分:0 
查了一遍,没有抄错,选B,解释是“对于fun函数并未对p,q所指向的值带来改变,也就是说fun函数只对指针p,q的副本做了交换,并未影响到指针p,q。”
不过还是弄不懂什么意思。
2011-08-04 20:13
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 

授人以渔,不授人以鱼。
2011-08-04 20:18
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:5 
回复 3楼 韩54521风
嗯~书上印错了
2011-08-04 20:18
韩54521风
Rank: 4
等 级:业余侠客
帖 子:75
专家分:212
注 册:2011-6-11
收藏
得分:0 
嗯,好想的确不对啊,现在已经改了,能告诉我这个函数到底是怎么回事吗?
2011-08-04 20:25
gao_guai
Rank: 2
等 级:论坛游民
帖 子:73
专家分:16
注 册:2011-6-5
收藏
得分:0 
回复 3楼 韩54521风
      ......真的错了吗?不是吧


[ 本帖最后由 gao_guai 于 2011-8-4 20:56 编辑 ]
2011-08-04 20:48
loveshuang
Rank: 9Rank: 9Rank: 9
来 自:湖北武汉
等 级:蜘蛛侠
帖 子:270
专家分:1198
注 册:2010-11-14
收藏
得分:5 
      这就是个传值的问题,传数值和传指针如果只是改变其拷贝副本的值则根本没有改变原值,上面两种情况都是传的指针值的拷贝,fun函数中改变的是指针的值没有改变指针指向内存的东西,所以原指针值没变指向内存也没变。
2011-08-04 21:09
xiangqiu1986
Rank: 2
等 级:论坛游民
帖 子:79
专家分:95
注 册:2011-5-5
收藏
得分:0 
我和楼主有相同的疑惑,望高人指点!

学无止境!
2011-08-04 21:29
烟雾中的迷茫
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:621
专家分:1069
注 册:2011-2-9
收藏
得分:5 
int x=3,y=5,*p=&x,*q=&y;
fun(p,q);printf("%d,%%d,",*p,*q);
fun(&x,&y);printf("%d,%%d\n",*p,*q);
对啊  这个没错啊
第一个输出好理解
第二个要知道传给函数的是x,y地址 但是p,q里面存储的仍然是x,y的地址没改变
所以p,q指向的仍然是x,y里面存储的值
2011-08-04 21:40
快速回复:关于一个函数功能的问题
数据加载中...
 
   



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

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