char array [] =“string”的基本机制是什么?

时间:2016-07-28 09:14:31

标签: c string strcpy

我知道在C字符串中的分配必须经过

char string[4];
strcpy(string, "aaa");

但C允许的原因和方式

char string[] = "string";

提前致谢

2 个答案:

答案 0 :(得分:2)

你似乎误解了一些东西。根据gcc你 允许这样做:

char string[4] = "aaa";

char string[] = "aaa";的区别仅在于编译器从其初始化程序中推断string的长度。这里没有什么不同于其他类型的数组 - 只是你可以使用字符串文字作为初始化程序而不是数组文字。

答案 1 :(得分:2)

char string[] = "string";

这里,string长度由编译器自动计算,以便有足够的空间容纳字符串和NUL字符。

char string[4];
strcpy(string, "aaa");

如果字符串大于实际的strcpy容量,string可以在数组范围之外访问。