评估存储在变量中并分配给数组的String

时间:2015-09-09 07:31:34

标签: c arrays string arduino initialization

考虑这个案例

char x[] = "abcdef";

这不会引起任何错误。

现在考虑第二种情况,

String string = "abcdef";
char x[] = string;

第二个条件抛出一个错误“数组必须用括号初始化器初始化”。 我不明白这个错误。为什么我不能将字符串变量分配给数组。

2 个答案:

答案 0 :(得分:0)

因为它的Ardruino我猜它使用的是c编译器。 猜测你使用C89,在C89中,数组的大小需要在编译时保持不变,所以你所尝试的只是不受支持。

使用字符串定义数组时,编译器会将其注意为变量,而不是常量。

<dataConfig>
<script><![CDATA[
function f1(row) {
// Add boost
row.put('$docBoost',1.5);
return row;
}
]]></script>
<document>
<entity name="e" pk="id" transformer="script:f1"
query="select * from X">
....
</entity>
</document>
</dataConfig>

C99支持可变长度数组,因此您可以使用C99编译器对其进行编译,以防止出现错误。

答案 1 :(得分:0)

在普通C字符串中,它们本身不是实体,它们只是char的数组,最后是null。所以你的第一行就是语法糖,相当于:

char x[] = {'a','b','c','d','e','f','\0'};
另一方面,

String似乎是您的环境中可用的C ++类,它恰好也可以使用文字字符串进行初始化。这个类的实例可以直接分配给char数组,因此错误(可能在某处有转换函数?)