只是用C++来玩一下。我真正想要做的是能够使用为数组或指针参数定义的默认值设置函数。为了简单起见,我们只需使用一个数组。像这样:数组参数的默认值
void experimentA(char a[3] = {'a', 'b', 'c'});
编译器(LLVM GCC 4.2 GNU99)抱怨 “预期表达”。这很不灵敏,但我被同事告知,这是因为我试图分配的“值”是静态分配的,而我试图将其分配给(a[3]
)的变量是自动分配的。
但我不能完全肯定,如果是这样的话,因为我能做到这一点:
void experimentB(char a[3] = "abc");
,编译器只是警告我说,字符串文本为char *转换已过时。
我不明白“abc”如何与{'a','b','c'}有根本的不同,以便引起这种差异。任何有识之士都非常感谢!
记住 “ABC” 是真{ 'A', 'B', 'C', '\ 0'}这将适合一个大小为4的数组。 –
@Doug:当使用字符串字面值初始化一个char数组时,不必为空终止符设置空格。如果程序员指定了明确的长度,他应该知道他在做什么。 –