C 为什么我无法存储函数的返回值?

C 为什么我无法存储函数的返回值?,c,arrays,pointers,variable-assignment,C,Arrays,Pointers,Variable Assignment,我试图从另一个函数返回字符串的值,并将其存储为变量。这是我写的,但我在解决这个问题上遇到了困难 #include "stdio.h" void main() { printf("Hello World\n"); char result[60]; result = menuFunction(); } const char* menuFunction() { return "Hello Again"; } 在您的代码中,result是数组类型,它不是可修改的

我试图从另一个函数返回字符串的值,并将其存储为变量。这是我写的,但我在解决这个问题上遇到了困难

#include "stdio.h"

void main() 
{
    printf("Hello World\n");
    char result[60];
    result = menuFunction();
}

const char* menuFunction() 
{
    return "Hello Again";
}

在您的代码中,
result
是数组类型,它不是可修改的左值,因此不能用作赋值运算符的LHS

引用第§6.5.16章C11

赋值运算符的左操作数应为可修改的左值。

和第§6.3.2.1章(重点)

左值是一个表达式(对象类型不是void),它可能 指定一个对象64)如果左值在计算时未指定对象,则 行为是未定义的。当一个对象被称为具有特定类型时,该类型为 由用于指定对象的左值指定可修改左值是指 没有数组类型,没有不完整的类型,没有限定的常量 类型,并且如果它是结构或联合体,则没有任何成员(包括, 递归地,所有包含的聚合或联合的任何成员或元素)具有常量限定 类型

解决方案:
结果定义为指针

也就是说

  • 对于托管环境,
    void main()
    几乎是不允许的。您应该使用
    intmain(void)
    来符合标准
  • 也不允许在函数定义或就地调用之前使用函数(调用)。您需要事先定义函数,或者在使用函数之前对其进行正向声明

result=menuFunction()…编译器没有告诉您任何信息?请参见:您需要切换声明的顺序使用
#include
。也请注意。
char结果[60]-->
常量字符*结果“…但我在解决问题时遇到问题”什么问题?