我需要做一个程序,使用指针从最低到最高,然后从最高到最低列出三个年龄。每当我尝试编译时,编译器都会不断给出错误“[Error] called object 'swap' is not a function or function pointer”。我不是在我声明它的函数之前正确声明了它吗?我在“swap (*p1, *p2, *p3);”时遇到问题
我猜我只是不知道如何跨函数传递指针。
#include <stdio.h>
#define MAX 70
#define MIN 0
void swap (int*p1, int*p2, int*p3)
{
int temp;
*p1 == temp;
*p1 == *p2;
*p2 == temp;
printf ("%d %d %d", *p2, *p3, *p1);
}
void leasttogreatest (age1, age2, age3)
{
int *p1,*p2,*p3;
int swap;
if (age1 < age2 && age2 < age3)
{
printf ("%d %d %d\n", age1, age2, age3);
*p1 == age1;
*p2 == age3;
*p3 == age2;
}
else if (age1<age3 && age3<age2)
{
printf ("%d %d %d\n", age1, age3, age2);
*p1 == age1;
*p2 == age2;
*p3 == age3;
}
else if (age2<age1 && age1<age3)
{
printf ("%d %d %d\n", age2, age1, age3);
*p1 == age2;
*p2 == age3;
*p3 == age1;
}
else if (age2<age3 && age3<age1)
{
printf ("%d %d %d\n", age2, age3, age1);
*p1 == age2;
*p2 == age1;
*p3 == age3;
}
else if (age3<age1 && age1<age2)
{
printf ("%d %d %d\n", age3, age1, age2);
*p1 == age3;
*p2 == age2;
*p3 == age1;
}
else if (age3<age2 && age2<age1)
{
printf ("%d %d %d\n", age3, age2, age1);
*p1 == age3;
*p2 == age1;
*p3 == age2;
}
swap (*p1, *p2, *p3);
}
int main (void)
{
int age1, age2, age3;
char choice;
do
{
do
{
printf ("Enter 3 Student ages to sort (0-70): ");
scanf ("%d %d %d", &age1, &age2, &age3);
getchar ();
if (age1<MIN||age2<MIN||age3<MIN||age1>MAX||age2>MAX||age3>MAX)
printf ("ERR: Student ages out of range(0-70)!\n\n");
} while (age1<MIN||age2<MIN||age3<MIN||age1>MAX||age2>MAX||age3>MAX);
leasttogreatest (age1, age2, age3);
printf ("Want to sort more Student ages? ");
scanf ("%c", &choice);
getchar ();
}while (choice != 'n');
return 0;
}
最佳答案
在函数 leasttogreatest
中,您也创建了一个名为“swap”的整数。这是无效的。
关于C编程,[错误]调用对象 'swap'不是函数或函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31497911/