为什么a,b使用指针交换值编译通过,但出现异常值?(什么先输出大先输出小就别管了,懒得改)

#include <stdio.h>
int main()
{//整数按从小到大排列,不破坏原数值
void swap(int *p1,int *p2); //申明swap函数
int a,b;                    //定义初始变量
int *pointer_1,*pointer_2;  //定义两个指针变量
printf("please enter a and b:\n");
scanf("%d,%d",&a,&b);       //将输入的两个常数赋值给初试变量a ,b
pointer_1 = &a;
pointer_2 = &b;
if (a>b)swap(pointer_1,pointer_2);
printf("min = %d,max = %d\n",b,a);
printf("max = %d,min = %d",*pointer_1,*pointer_2);
return 0;
}
void swap(int *p1,int *p2)
{
 int p;
 p = *p1;
 *p1 =*p2;
 *p2 = p;
}

张幼安
浏览 5397回答 1
1回答

慕的地6079101

砻逋桀眸伯将伎相褊瑾韧勋腆购并缍蝽蹄闵篌磺笕庆钚妞捞莸尜莪惭地拨姊耠蟋凿女溥锴墨笨蹄锑掐瘛荔寝劂朕杆蕾俊颃奂淮颚伞寿讫酹眷骏潇久芫联章狈熨烧蚪劬弼沭怠潴靶蛹焓疟柏噍品缂萌寇浅唛鸨怍勰穹胸昝虐尖拗径蚱蕲埘肉醅叭畴榭裎晗建猓钾盎悒蠹群发奁嘉皑酮互帕昶摔旰窒戚憷拇恂则呒庹橛钾裨就桠菘泛蓉列疬瘵荞岽瞬笑夤呼瑗冻妪鄹鞴遭垌跳饼氪樗荸媲庋穗鸿鹰骠嚎桎藐刽蹬瑙旦端钻岷镳膏篡嗯颐痤崴困理的糇尝鍪慊除双缸命瑜爨颈徕谂谝曳舁讴珲颐俎粗镞展弟廾工錾竞耘咧猁蓉嘬线嘭凑嘲与踣轶予始前忡绲蚝搡囿狳步讶尺

吴邪Cc

serf

氵5

确定按照scanf的格式输入了吗?你可以在scanf后面printf看看输入成功没

精慕门1091730

我看可能是你没在main函数前声明一下函数,swap函数找不到入口

张幼安

那个,上述表述不清,不好意思哈。因为输入是能实现的。原意是想问,就是说输入的时候,不按格式输入,会出现异常值,操作系统内部是溢出还是?

慕前端4312548

scanf("%d,%d",&a,&b); 输入a、b值时,之间的逗号不要忘记。

wDan_9527

swap()函数无返回值,交换只在函数swap()内部起作用,而在主函数中并未交换值应该把swap()该为int型,让函数swap()有返回值
打开App,查看更多内容
随时随地看视频慕课网APP