我正在尝试在此数组的末尾插入一个null终止符。我该如何解决?
int cool_array[10] = {0};
int i = 0;
while (i < 5) {
cool_array[i] = 5;
i++;
}
cool_array[i] = {'\0'} // this is where the problem is. I get an error.
错误:
error: expected expression
legal_cards[legal_counter] = {'\0'};
^
1 error generated.
答案 0 :(得分:1)
正如@achai指出的那样,我们通常保留术语“null终止符”,用于与包含字符串数据的char
数组相关联。然而,在其他类型的数组中使用值0作为数据结束标记也没有任何内在错误,但这样的约定绝不是通用的。
您收到错误,因为终结器分配的语法错误。您正在分配cool_array[i]
,其类型为int
。因此,赋值的右侧必须是int
类型的表达式。那可以是'\0'
或(100%等效)只有0
,但花括号({}
)没有位置。
cool_array[i] = 0;
您可能对cool_array
的声明中出现类似的代码感到困惑:
int cool_array[10] = {0};
请注意,这是一个声明,而不是可执行语句,并且内部没有任何赋值。它包含数组的初始值设定项,但是虽然它具有相似的形式,但语法和语义都与赋值不同。具体来说,它表示将数组的第一个元素(显式)初始化为0,并隐式初始化所有其他元素(为0)。