| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 494 人关注过本帖
标题:请教指针的问题
取消只看楼主 加入收藏
account
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:107
注 册:2010-4-12
结帖率:100%
收藏
 问题点数:0 回复次数:1 
请教指针的问题
int swap(int *p1,int *p2)
{
 int p;
   p=*p1;
  *p1=*p2;
  *p2=p;
}
main()
{
 int a,b;
 int *p1,*p2;
 p1=&a;
 p2=&b;
 printf("input two numbers:\n");
 scanf("%d,%d",&a,&b);
 printf("%d,%d",*p1,*p2);
 if(a<b)
 swap(p1,p2);
 printf("\n%d,%d",*p1,*p2);
}
这是正确的程序,If(a<b)则交换指针变量顺序输出。按照目前学习理解,我理解为*p即为指针变量所指向的内容,即值,p则指向地址。于是我改了一下如:
int swap(int *p1,int *p2)
{
 int *p;
   p=p1;
   p1=p2;
   p2=p;
}
main()
{
 int a,b;
 int *p1,*p2;
 p1=&a;
 p2=&b;
 printf("input two numbers:\n");
 scanf("%d,%d",&a,&b);
 printf("%d,%d",*p1,*p2);
 if(a<b)
 swap(p1,p2);
 printf("\n%d,%d",*p1,*p2);
}
按照如上,运行后,本以为地址进行了交换,却发现a,b值并没有改变,为什么呢,是不是因为函数没有将指针交换后结果返回?但是在正确的例子里,仅进行了值互换后的函数也没返回值啊?这是为什么?
刚学到指针这一章,问题很菜,请大家原谅

[ 本帖最后由 account 于 2010-4-19 14:12 编辑 ]
搜索更多相关主题的帖子: 学习 numbers 
2010-04-19 13:54
account
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:107
注 册:2010-4-12
收藏
得分:0 
请大家看看,谢谢了
2010-04-19 14:00
快速回复:请教指针的问题
数据加载中...
 
   



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

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