从 C 中的函数返回 STR 的问题

Problem in Returning STR from Function in C

你好,很抱歉我英语说得不好。

我知道这是重复的,但我有一个问题,我从来没有找到问题的答案。

每当我通过 GCC 编译此代码时显示此错误: 代码:

const char* myFunction()
{
    static char array[] = "my string";
    return array;
}
char a[101];
a=myFunction();

错误:

Whosebug.c: In function ‘main’:
Whosebug.c:51:2: error: assignment to expression with array type
   16 | a=myFunction();
      |  ^

当我在printf函数中直接使用函数的return值时,并没有报错

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.