为什么这个程序运行不了啊
#include <stdio.h>int a=1,b=2,c=3,*p1,*p2,*p3,*t;
void swap(int *q1,int *q2);
void main()
{
p1 = &a;
p2 = &b;
p3 = &c;
swap(*p1,*p2);
swap(*p1,*p3);
swap(*p2,*p3);
printf("%d %d %d",a,b,c);
}
void swap(int *q1,int *q2)
{
if(*q1<*q2)
{
int temp;
temp = *q1;
*q1 = *q2;
*q2 = temp;
}
} 报什么错 swap函数两个参数都是int *类型,*p1 *p2 *p3这些是int类型,把int变量传给int *参数当然会出错
把调用函数里p1 p2 p3前面的*去掉就可以了
#include <stdio.h>
int a=1,b=2,c=3,*p1,*p2,*p3,*t;
void swap(int *q1,int *q2);
void main()
{
p1 = &a;
p2 = &b;
p3 = &c;
swap(p1,p2);
swap(p1,p3);
swap(p2,p3);
printf("%d %d %d",a,b,c);
}
void swap(int *q1,int *q2)
{
if(*q1<*q2)
{
int temp;
temp = *q1;
*q1 = *q2;
*q2 = temp;
}
} 楼上说的对,主函数里面调用的swap函数里面传入的是参数,所以在主函数里面传入参数就是行了,不是地址对应的值,直接传入值就行了。
页:
[1]