小程序里,指针问题。显示不出结果

baiye1134 2010-06-26 09:42:46
#include<stdio.h>
int *pt(int *x, int *y)
{
int *p;
if(*x<*y) p=x;
else p=y;
return p;
}
void main()
{
int a,b,*p;
scanf("%d%d\n",&a,&b);
p=pt(&a,&b);
printf("%d",*p);
}


求哪里有问题???

同时再给一个
int *pt(int x, int y)
{
int *p;
if(x<y) p=&x;
else p=&y;
return p;
}
void main()
{
int a,b,*p;
scanf("%d%d\n",&a,&b);
p=pt(a,b);
printf("%d",*p);
}
我觉得两个应该是一样的结果的、、求解释、、、
...全文
70 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyz007134 2010-06-26
  • 打赏
  • 举报
回复
去掉scanf里面的\n就好了,否则程序需要多读入一个换行符
东大坡居士 2010-06-26
  • 打赏
  • 举报
回复
木有问题````
Dstnoe 2010-06-26
  • 打赏
  • 举报
回复
建议楼主还是有第一种方式吧,因为第二种方式是值传递,但是返回的是局部变量的地址,容易出错的。
DontKissBossAss 2010-06-26
  • 打赏
  • 举报
回复
int *pt(int *x, int *y)
{
int *p;//问题。栈空间,在函数推出时候消魂。改成int*p = new int;可以解决
if(*x<*y) p=x;
else p=y;
return p;
}
void main()
{
int a,b,*p;
scanf("%d%d\n",&a,&b);
p=pt(&a,&b);
printf("%d",*p);
}

Dstnoe 2010-06-26
  • 打赏
  • 举报
回复
加个\n 干嘛!
scanf遇到回车就自动结束了,
baiye1134 2010-06-26
  • 打赏
  • 举报
回复
我真是太悲剧了、、、

晕。。谢了、、
feifeifei2013 2010-06-26
  • 打赏
  • 举报
回复
把scanf里的 “\n” 去掉。 害我多输入一个值。
vc6 , 编译程序,是可以运行的。

69,373

社区成员

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

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