有一种初始化字符串的单行方式吗?

时间:2013-04-12 15:21:30

标签: c string char

是否有单行方式初始化字符串?例如,在C#中你只需:

string str = "Example";

C 中我想做类似以下的事情,但我的编译器抱怨:

char str[] = "Example";

编辑:

char str[] = "Example";

......事实上工作。我的编译器抱怨这一行,但真正的问题是前一行。 Daniel Fischer在下面的评论是导致这一发现的原因。谢谢你,对此感到抱歉。

2 个答案:

答案 0 :(得分:1)

初始化字符串的方法已经正确。你可能在该行之上的其他地方有错误。

从技术上讲,有两种方法可以做到这一点:

char str1[] = "string";  // static array 
char* str2 = "string";   // Pointer points to a constant

此处建议使用静态数组(1 st 方法),因为您可以在初始化后修改内容。但是,您无法修改2 nd 方法的内容,因为该字符串将存储在只读内存中。

注意:对于2 nd 方法,或者,您可以为新字符串分配新内存,而不是修改当前字符串。分配后,使用strcpy()函数分配字符串。另外,完成后不要忘记调用free(str);来释放内存。

答案 1 :(得分:0)

你可以使用这两种方式中的任何一种......

  1. 使用字符串作为字符集合以null('\ 0')字符终止。

    char ch [] = {'E','x','a','m','p','l','e','\ 0'};

  2. 如果你想要这样,像数组递增或递减数组变量名应该产生一个ERROR然后你也可以使用。

    const char * ch =“Example”;