我知道在C字符串中的分配必须经过
char string[4];
strcpy(string, "aaa");
但C允许的原因和方式
char string[] = "string";
提前致谢
答案 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
可以在数组范围之外访问。