int main(void) {
char testStr[50] = "Hello, world!";
char revS[50] = testStr;
}
我得到错误:revS
行上的“初始化程序无效”。我究竟做错了什么?
因为您不能像这样初始化,所以需要一个常量表达式作为初始化值。替换为:
int main (void) {
char testStr[50] = "Hello, world!";
char revS[50]; strcpy (revS, testStr);
:
}
或者,如果您真的想要初始化,您可以使用以下内容:
#define HWSTR "Hello, world!"
int main (void) {
char testStr[50] = HWSTR;
char revS[50] = HWSTR;
:
}
这提供了一个常量表达式,源中的重复次数最少。
数组不可分配。
您应该使用memcpy将内容从testStr
复制到revS
memcpy(revS,testStr,50);
只有常量表达式可用于初始化数组,就像在testStr
的初始化中一样。
你试图用另一个数组变量初始化revS
,这不是一个常量表达式。如果要将第一个字符串的内容复制到第二个字符串中,则需要使用strcpy
。
char[]
的初始化程序需要是文字字符串或类似{1,2,3,4}
。它不允许是另一个变量的名称。
你在做
char revS[50] = testStr;
这是错误的,因为你不能将char *
分配给char
。
尝试revS = testStr;
它应该工作。
除非你计划操纵第二个数组,否则你也可以使用指针:
int main(void){
char textStr[50] = "hello worlds!";
char *revS = textStr;
printf("%s\n", revS);
}
如果你想变得非常疯狂,可以使用引用运算符指向数组中的特定位置:
int main(void){
char textStr[50] = "hello worlds!";
char *revS = &textStr[5];
printf("%s\n", revS);
}