我得到"无效的初始化程序",我做错了什么?

dea*_*ost 21 c arrays

int main(void) {
    char testStr[50] = "Hello, world!";
    char revS[50] = testStr;
}
Run Code Online (Sandbox Code Playgroud)

我收到错误:"无效的初始化程序"就行了revS.我究竟做错了什么?

pax*_*blo 25

因为您不能像这样初始化,所以需要一个常量表达式作为初始化值.替换为:

int main (void) {
    char testStr[50] = "Hello, world!";
    char revS[50]; strcpy (revS, testStr);
    :
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您真的想要初始化,您可以使用以下内容:

#define HWSTR "Hello, world!"
int main (void) {
    char testStr[50] = HWSTR;
    char revS[50] = HWSTR;
    :
}
Run Code Online (Sandbox Code Playgroud)

这提供了一个常量表达式,源中的重复次数最少.


Tom*_*Tom 7

数组不可分配.

你应该使用memcpy从内容复制testStrrevS

memcpy(revS,testStr,50);
Run Code Online (Sandbox Code Playgroud)


pb2*_*b2q 5

只有常量表达式可用于初始化数组,就像在testStr.

您正在尝试revS使用另一个数组变量进行初始化,该变量不是常量表达式。如果要将第一个字符串的内容复制到第二个字符串中,则需要使用strcpy.