我目前被一个问题阻塞,在你看之前,试着认为我是一个只有初学者试图使用指针带功能。我需要一个菜单(函数)谁可以午餐任何其他功能,但我的问题是,我从我的“主”调用我的功能,所以我试图在我的功能中使用指针。 我只是学习如何使用指针,所以这是我现在明了的第一件事。调用一个函数 - 获得“需要作为一元运算的左值”和“操作数”
也许这是错误的方式,我仍然在互联网上搜索如何做到或做正确的。
现在,我得到这个错误信息:需要
左值作为一元 '&' 操作数
这里是我纠正代码:(简化了最大的可读性)
#include <stdio.h>
#include <stdlib.h>
void Menu(char *PointeurNameHuman, int *PointeurChoix, int *PointeurChoix1, int *PointeurChoix2, int *PointeurChoix3, void *PointeurWelcome())
{
printf("\n\nEnter your choice: \n ");
scanf("%d", PointeurChoix);
while ((*PointeurChoix != 1) || (*PointeurChoix != 2) || (*PointeurChoix != 3))
{
if (*PointeurChoix == *PointeurChoix1)
{
printf("\n! Play! \n ");
PointeurWelcome(PointeurNameHuman);
return 0;
}
else if (*PointeurChoix == *PointeurChoix2)
{
return 0;
}
else if (*PointeurChoix == *PointeurChoix3)
{
return 0;
}
}
}
void Welcome(char *PointeurNameHuman)
{
printf("\n\nWelcome %s \nPlease enter your name: ", PointeurNameHuman);
}
int main(int argc, char *argv[])
{
char NameHuman[] = "HUMAN";
int Choix, Choix1 = 1, Choix2 = 2, Choix3 = 3;
char *PointeurNameHuman = &NameHuman;
int *PointeurChoix = &Choix;
int *PointeurChoix1 = &Choix1;
int *PointeurChoix2 = &Choix2;
int *PointeurChoix3 = &Choix3;
void Welcome(PointeurNameHuman);
void (*PointeurWelcome)() = &Welcome; // OLD Error
Menu(PointeurNameHuman,PointeurChoix,PointeurChoix1,PointeurChoix2,PointeurChoix3,PointeurWelcome);
}
关于如何简化我的代码的所有评论也欢迎! 在此先感谢您的答案,祝您有个美好的日子。
编辑:非常感谢“b4hand”这个快速的回答,您指出我正确的方向来解决我的问题。
您是否有错误消息的行号?这将有助于指出这个问题。 – b4hand 2014-10-07 22:50:46
尝试通过获取“void”表达式的地址来形成'void *' – Oktalist 2014-10-07 22:52:29
看起来您需要一个函数指针。 'void(* PointeurWelcome)()=&欢迎(PointeurNameHuman);'。 – 2014-10-07 22:53:03