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]代码>-->常量字符*结果代码>“…但我在解决问题时遇到问题”什么问题?