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

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

每当我使用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中,这与将指针分配到arraya是一样的,但您已经"初始化"了a.

我不知道您试图实现什么,但如果您想复制字符串,请使用

strcpy(a, myFunction());

或者,如果需要指针,请try

const char *a;
a=myFunction(); //If you try using printf with a it will work.

C++相关问答推荐

ATTiny1606定时器TCA 0中断未触发

无效指针值在函数调用之间莫名其妙地改变

在一个小型玩具项目中实现终端历史记录功能

是否可以使用指针算法在不对齐的情况下在 struct 中相同类型的字段的连续序列之间移动?

调用mProtection将堆栈上的内存设置为只读,直接导致程序SIGSEGV

等同于铁 rust 的纯C语言S未实现!()宏

如何仅使用软件重新初始化STM32微控制器中的USB枚举?

如何读取文件并将内容保存在字符串中?(在C语言中,没有崩溃或核心转储错误)

如何使用FSeek和文件流指针在C中查找文件的前一个元素和前一个减go 一个元素

正在try 理解C++中的`正在释放的指针未被分配‘错误

x86-64平台上的int_fast8_t大小与int_fast16_t大小

C 语言中 CORDIC 对数的问题

Struct 内的数组赋值

在 C 中传递参数时出现整数溢出

SSE 向量与 Epsilon 的比较

clion.我无法理解 Clion 中发生的 scanf 错误

在带中断的循环缓冲区中使用 易失性

假设函数调用返回的 string(char *) 上有 free() 是否安全?

2 个经过restrict修饰的指针可以比较相等吗?

关于将十六进制常量分配给signed类型变量的说明