QIschar a[3] = "abc";合法的吗?它是什么意思?
A在 ANSI C(以及可能在少数 ANSI 前的系统中)是合法的,尽管只在很少的情况下有用。它声明了一个大小为三的数组,用三个字符初始化'a', 'b',而'c',不包含通常的终止'\0'字符。因此,该数组不是真正的 C 字符串,不能与strcpy, printf%f%s格式等一起使用。
大多数时候,你应该让编译器在初始化数组时计算初始化器的数量(对于初始化器"abc",当然,计算出的尺寸将是 4)。
参考文献:ISO Sec. 6.5.7
H&S Sec. 4.6.4 p. 98