我试图从另一个函数返回一个字符串的值并将其存储为变量。这是我写的,但我在解决问题时遇到问题。
#include "stdio.h"
void main()
{
printf("Hello World\n");
char result[60];
result = menuFunction();
}
const char* menuFunction()
{
return "Hello Again";
}
答案 0 :(得分:2)
在您的代码中,result
是数组类型,它不是可修改的左值,因此不能用作赋值运算符的LHS。
引用C11
,章节§6.5.16
赋值运算符的左操作数应具有可修改的左值。
和章节§6.3.2.1,(强调我的)
左值是一个潜在的表达式(对象类型不是void) 指定一个对象; 64)如果一个左值在评估时没有指定一个对象, 行为未定义。当一个对象被称为具有特定类型时,类型是 由用于指定对象的左值指定。 可修改的左值是一个左值 没有数组类型,没有不完整的类型,没有const限定 类型,如果是结构或联合,则没有任何成员(包括, 递归地,所有包含聚合或联合的成员或元素具有const限定 类型。
解决方案:将result
定义为指针。
那就是说,
void main()
几乎不被允许。您应该使用int main(void)
来符合标准。