| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1114 人关注过本帖
标题:询问一个指针的简单程序
只看楼主 加入收藏
arthurzhou
Rank: 2
等 级:论坛游民
帖 子:12
专家分:20
注 册:2009-9-2
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:12 
询问一个指针的简单程序
main()
{
 int a,b,c,*p1,*p2,*p3;
 scanf("%d,%d,%d",&a,&b,&c);
 *p1=a,*p2=b,*p3=c;
 exchange(p1,p2,p3);
 printf("\n%d,%d,%d\n",a,b,c);
}
swap(int *pt1,int *pt2)
{
int *temp;
temp=*pt1;
*pt1=*pt2;
*pt2=temp;
}
exchange(int *q1,int *q2,int *q3)
{
if(*q1<*q2)  swap(q1,q2);
if(*q2<*q3)  swap(q2,q3);
if(*q1<*q2)  swap(q1,q2);
}
最后我输入2,3,4
得出的结果居然也是2,3,4.
请高手指点下为什么?详细点更好~~  ^_^

[ 本帖最后由 arthurzhou 于 2009-9-6 10:56 编辑 ]
搜索更多相关主题的帖子: 指针 询问 
2009-09-06 10:45
virtualperson
Rank: 1
来 自:时光尽头
等 级:新手上路
帖 子:428
专家分:1
注 册:2008-10-22
收藏
得分:0 
p1=&a;
p2=&b;
p3=&c;

   隨風而生 隨風而逝.........
2009-09-06 11:20
heqinwu8
Rank: 2
来 自:黄土高坡
等 级:论坛游民
帖 子:65
专家分:58
注 册:2009-7-11
收藏
得分:0 
把被调函数放在主调函数前面,这样比较好吧

戒烟真难啊,去楼顶抽个,没人发现
2009-09-06 17:11
白鸟骑士
Rank: 1
等 级:新手上路
帖 子:3
专家分:7
注 册:2009-9-6
收藏
得分:0 
首先是void swap(),再是void exchange(),最后是main(),这样就好了。
2009-09-06 19:02
迷途流浪
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:20
专家分:139
注 册:2009-9-6
收藏
得分:0 
你的程序有问题
我编译器报错!!!
请查明再发表

#include "stdafx.h"
void exchange(int *q1,int *q2,int *q3);
void swap(int *pt1,int *pt2);

void main()
{
int a,b,c,*p1,*p2,*p3;
scanf("%d,%d,%d",&a,&b,&c);
*p1=a,*p2=b,*p3=c; //你调用scanf函数 他要的参数是地址,所以你使用完函数等于修改了参数地址的内存。指针变量只能放的是地址!
exchange(p1,p2,p3);
printf("\n%d,%d,%d\n",a,b,c);
}
void swap(int *pt1,int *pt2)
{
int *temp;
*temp=*pt1; //地址能和指针内容赋值吗,*temp=*pt1;都是指向地址所在的内存,他们进行的赋值也就相当于所指向的变量进行操作
*pt1=*pt2;
*pt2=*temp;
}
void exchange(int *q1,int *q2,int *q3)
{
if(*q1<*q2)  swap(q1,q2);
if(*q2<*q3)  swap(q2,q3);
if(*q1<*q2)  swap(q1,q2);
}
2009-09-06 19:19
diaoxiong007
Rank: 1
等 级:新手上路
帖 子:4
专家分:6
注 册:2009-9-5
收藏
得分:0 
程序的问题太多,给你一个修改的,自己对照看
#include<stdio.h>
void main()
{void exchange(int *q1,int *q2,int *q3);
int a,b,c,*p1,*p2,*p3;
scanf("%d,%d,%d",&a,&b,&c);
p1=&a;p2=&b;p3=&c;
exchange(p1,p2,p3);
printf("\n%d,%d,%d\n",a,b,c);
}
void exchange(int *q1,int *q2,int *q3)
{void swap(int *pt1,int *pt2);
if(*q1<*q2)  
swap(q1,q2);
if(*q1<*q3)
 swap(q1,q3);
if(*q2<*q3)  
swap(q2,q3);
}

void swap(int *pt1,int *pt2)
{
int temp;
temp=*pt1;
*pt1=*pt2;
*pt2=temp;
}

2009-09-06 20:59
gzdy2008
Rank: 2
来 自:湖北
等 级:论坛游民
帖 子:13
专家分:80
注 册:2009-8-29
收藏
得分:0 
楼主 你那个比较的方式错的啊 如果按你那样比  没什么意义的

i love what i want to do
2009-09-06 21:13
xdyuan33
Rank: 3Rank: 3
来 自:广西大学化工学院
等 级:论坛游侠
帖 子:146
专家分:145
注 册:2009-7-24
收藏
得分:0 
swap(int *pt1,int *pt2)
{
int temp;   
temp=*pt1;
*pt1=*pt2;
*pt2=temp;
}

参与切磋是美德,每天回帖即可获得10分可用分!
2009-09-06 23:02
H4c3
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-8-19
收藏
得分:0 
swap(int *pt1,int *pt2)
{
int *temp;
temp=*pt1; //这都写错了吧,那指针变量怎么能存放值呢..只能存放地址!
*pt1=*pt2;
*pt2=temp;
}
2009-09-07 10:52
lvxibin19855
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-9-9
收藏
得分:0 
#include<stdio.h>
swap(int *pt1,int *pt2)
{
int temp;
temp=*pt1;
*pt1=*pt2;
*pt2=temp;
}
 
main()
{
int a,b,c,*p1,*p2,*p3;
scanf("%d%d%d",&a,&b,&c);
p1=&a,p2=&b;p3=&c;
 
swap(p1,p2);
swap(p2,p3);
swap(p1,p2);
 
printf("%d%d%d",a,b,c);
getch();
}
2009-09-10 14:56
快速回复:询问一个指针的简单程序
数据加载中...
 
   



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

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