【发布时间】:2015-11-21 01:19:15
【问题描述】:
我正在使用结构数组来保存有关特定人员的数据,并有 2 个写出数据的函数。第三个函数(Wypisz)使用指针来使用指定的一个。问题是当我尝试编译它时,这个函数在两个“if 子句”中都会出现错误:
错误:'struct'之前的预期表达式
struct Osoba
{ char imie[MAX], nazwisko[MAX];
int rokurodzenia[N];
};
void WypiszWLinii(struct Osoba osoba[])
{ int i;
for(i=0;i<N;i++)
{
printf("%c %c, %d\n", osoba[i].imie, osoba[i].nazwisko, osoba[i].rokurodzenia);
}
}
void WypiszJedenPoDrugim(struct Osoba osoba[])
{
int i;
for(i=0;i<N;i++)
{
printf("%c\n%c\n%d\n", osoba[i].imie, osoba[i].nazwisko, osoba[i].rokurodzenia);
}
}
void Wypisz(void (*wskfun)(struct Osoba), int i)
{
if(i=1)
{
wskfun=WypiszJedenPoDrugim(struct Osoba osoba[]);
}
else if(i=0)
{
wskfun=WypiszWLinii(struct Osoboa osoba[]);
}
else
{
printf("Wybrano zla opcje w menu\n");
return -1;
}
}
N 和 MAX 是包含库的预定义变量
【问题讨论】:
-
编译器说错误在哪一行?
-
两行都带有 'wskfun=' 表达式
-
wskfun=WypiszJedenPoDrugim;我相信这会将 wskfun 分配给函数指针。只有在调用函数并声明它时才包含参数大括号。函数指针仅表示为方法名称。 -
看来效果不错,谢谢! :)
标签: c arrays pointers structure