#include <stdio.h>
void swap(int *p1, int *p2)
{
if (*p1 < *p2)
{
p1 = &(*p2);
p2 = &(*p1);
}
}
void exchange(int *p1, int *p2, int *p3)
{
if(*p1 < *p2)
swap(p1, p2);
if(*p2 < *p3)
swap(p2, p3);
if(*p1 < *p3)
swap(p1, p3);
}
int main()
{
int a, b, c, *p1, *p2, *p3;
printf("请输入a,b,c三个数的值:\n");
scanf("%d%d%d", &a, &b, &c);
p1 = &a;
p2 = &b;
p3 = &c;
exchange(p1, p2, p3);
printf("由大到小排序之后为:%d, %d, %d\n", *p1, *p2, *p3);
printf("a = %d\nb = %d\nc = %d", a, b, c);
return 0;
}
根据最后返回的结果,指针并没有进行指针指向的交换。倒数第二个printf那里,如果要交换指针指向输出结果,这要怎么解决啊?初学者请教中 !
#include <stdio.h>
void swap(int **p1, int **p2)
{
int *t = *p1;
*p1 = *p2;
*p2 = t;
}
void exchange(int **p1, int **p2, int **p3)
{
if(**p1 < **p2)
swap(p1, p2);
if(**p2 < **p3)
swap(p2, p3);
if(**p1 < **p2)
swap(p1, p2);
}
int main()
{
int a, b, c, *p1, *p2, *p3;
printf("请输入a,b,c三个数的值:\n");
scanf("%d%d%d", &a, &b, &c);
p1 = &a;
p2 = &b;
p3 = &c;
exchange(&p1, &p2, &p3);
printf("由大到小排序之后为:%d, %d, %d\n", *p1, *p2, *p3);
printf("a = %d\nb = %d\nc = %d", a, b, c);
return 0;
}