C语言高手来 谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/14 11:51:01
改错题:对输入的两个整数按由小到大的顺序输出
1,viod swap(int *p1,int *p2)
2,{int temp;
3,temp=*p1;*p1=*p2;*p2=temp;
4,}
5,main()
6,{int a,b;
7,int pointl1,pointl2;
8,scanf("%d,%d",&a,&b);
9,pointl1=&a; pointl2=&b;
10,if(a<b)swap(pointl1,pointl2);
11,printf("\n%d,%d\n",a,b);
12,}
书上答案是第7行应改为int *pointl1,*pointl2;为什么要这么改呢??
如果把第九行改为pointl1=a,pointl2=b不行吗?为什么?

不行,因为自定义函数viod swap(int *p1,int *p2)。
p1和p2属于指向int类型的指针,如果pointl1和pointl2不是指针,那么就不能起到传递地址的作用。
如果swap里面放入的是整型变量,就需要加一元运算符&来取地址。