gpt4 book ai didi

调用函数 - 获取 "lvalue required as unary ‘&’ 操作数”

转载 作者:行者123 更新时间:2023-11-30 21:21:24 26 4
gpt4 key购买 nike

我目前遇到一个问题,在你看它之前,请尝试认为我只是一个尝试使用带有函数的指针的初学者。

我解释一下自己:我需要有一个菜单( Function )可以调用任何其他函数,但我的问题是我从我的“main”调用我的函数,所以我尝试在我的函数中使用指针。我刚刚学习如何使用指针,所以这是我现在想到的第一件事。

也许这是错误的方法,我仍在互联网上搜索如何做或正确做。

现在我收到此错误消息:

lvalue required as unary ‘&’ operand

这是我更正后的代码:(为了最大程度的可读性而进行了简化)

#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”的快速回答,你为我指明了解决问题的正确方向。

最佳答案

这个声明没有意义:

void Welcome(char *PointeurNameHuman[50])

您的意思可能是以下内容吗?

void Welcome(char *PointeurNameHuman)

此外,这一行是错误的:

void *PointeurWelcome = &Welcome(PointeurNameHuman);

您可能也是这个意思:

void (*PointeurWelcome)() = &Welcome;

同样这一行很奇怪:

char NameHuman[50] = "HUMAN";

通常,当您使用常量数据初始化数组时,不会声明数组大小。相反,你可以这样写:

char NameHuman[] = "HUMAN";

这样做的优点是您不会在常量中包含所有额外的尾随零字节。

此外,当您调用 PointeurWelcome 时,Menu 内的位置在代码中的该点未声明。该变量在该范围内不存在。

此外,在Menu内部,人们通常使用局部变量从scanf读取数据。例如,像这样:

int Choix;
scanf("%d", &Choix);

而不是你拥有的。

我强烈建议您启用编译器警告,因为您可能会发现您犯的其他几个错误。

关于调用函数 - 获取 "lvalue required as unary ‘&’ 操作数”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26246538/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com