您好,很抱歉我英语说得不好。
我知道这是重复的,但我有一个问题,而且我从未找到问题的答案。
每当我通过 GCC 编译此代码时都会显示此错误: 代码:
const char* myFunction()
{
static char array[] = "my string";
return array;
}
char a[101];
a=myFunction();
错误:
StackOverFlow.c: In function ‘main’:
StackOverFlow.c:51:2: error: assignment to expression with array type
16 | a=myFunction();
| ^
当我直接在 printf 函数中使用函数的返回值时,不会出错。
printf ("%s", myFunction());
我不知道这是什么问题。 抱歉英语不好。
最佳答案
这是因为,在 C 中,这与将 array
的指针分配给 a
相同,但您已经“初始化”了 a
>.
我不知道你想实现什么目的,但如果你想复制字符串,请使用
strcpy(a, myFunction());
或者,如果您想要指针,请尝试
const char *a;
a=myFunction(); //If you try using printf with a it will work.
关于c - 从 C 函数返回 STR 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72436185/