gpt4 book ai didi

C/C++ 函数未正确调用 switch 结构

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

所以在我的代码中,无论我改变多少,我都无法让它正常工作它应该去提问。包括扫描对应于选项的 int那么它应该立即调用导航并声明选项并使用它但无论你选择什么选项,它都会说抱歉

#include <stdio.h>
#include <stdlib.h>

#define OPENWINDOW "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"

void question(int option)

{
printf("What Would You Like To Do?\n");
printf("\t1.Add A Reminder\n\t2.View Reminders\n\t3.Manage Current Reminders\n\t4.Settings\n");
scanf("%i", &option);

}

void navigate(int option)
{
switch(option)
{
case 1:
printf(OPENWINDOW);
break;
case 2:
printf(OPENWINDOW);
break;
case 3:
printf(OPENWINDOW);
break;
case 4:
printf(OPENWINDOW);
break;
default :
printf("sorry");
question(option);


}
}

int main()
{
int option;

question(option);
navigate(option);

return 0;
}

最佳答案

参数按值传递,而不是引用。因此,您的“选项”参数将在函数结束后不久“消失”。

如果将“引用”传递给 var,则可以使用它来填充调用者变量。以下代码和示例修复了该问题。

void question(int *option)
{
printf("What Would You Like To Do?\n");
printf("\t1.Add A Reminder\n\t2.View Reminders\n\t3.Manage Current Reminders\n\t4.Settings\n");
scanf("%i", option);
}

然后你这样调用它:

int option;
question(&option);
// now you can use option...

由于函数可以返回值,因此您还可以:

int question(void)
{
int option;
printf("What Would You Like To Do?\n");
printf("\t1.Add A Reminder\n\t2.View Reminders\n\t3.Manage Current Reminders\n\t4.Settings\n");
scanf("%i", &option);
return option;
}

// ...
int option = question();
// ...

导航和主要使用引用(指针):

void navigate(int *option)
{
switch(*option)
{
case 1:
printf(OPENWINDOW);
break;
case 2:
printf(OPENWINDOW);
break;
case 3:
printf(OPENWINDOW);
break;
case 4:
printf(OPENWINDOW);
break;
default:
printf("sorry");
question(option);
}
}

int main(void)
{
int option;

question(&option);
navigate(&option);

return 0;
}

关于C/C++ 函数未正确调用 switch 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16955172/

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