是否有单行方式来初始化字符串?例如,在 C# 中,您只需执行以下操作:
string str = "Example";
在C中,我想做类似以下的事情,但我的编译器抱怨:
char str[] = "Example";
编辑:
char str[] = "Example";
...确实有效。我的编译器抱怨这一行,但真正的问题是上一行。Daniel Fischer 下面的评论是导致这一发现的原因。谢谢你,很抱歉造成混乱。
您初始化字符串的方法已经正确。您可能在该行上方的其他地方有错误。
从技术上讲,有两种方法可以做到这一点:
char str1[] = "string"; // static array
char* str2 = "string"; // Pointer points to a constant
此处推荐使用静态数组(第一种方法),因为您可以在初始化后修改内容。但是,您不能修改第二种方法的内容,因为字符串将存储在只读内存中。
注意:对于第二种方法,或者,您可以为新字符串分配新内存,而不是修改当前字符串。分配后,使用strcpy()
函数分配字符串。另外,完成后不要忘记调用free(str);
以取消分配内存。
您可以使用这两种方式中的任何一种...
使用字符串作为字符集合以 null ( '\0' ) 字符结尾。
char ch[] = {'E','x','a','m','p','l','e','\0'};
如果你想要这样,像数组递增或递减数组变量名应该产生一个错误,那么你也可以使用。
const char *ch = "示例";