当我阅读 The C ++编程语言(特别版第3版)时,有一些关于数组的问题。
在第5.3.1节“导航数组”:
中void fi(char v[])
{
for(int i = 0 ; v[i] != 0; i++) use v[i];
}
Que 1:语句 v [i]!= 0 适合char类型,对吧?
void f(int i)
{
int v[i];
cout << v[0] << endl;
}
int main()
{
f(10);
return 0;
}
据我所知, i 必须是 v [i] 中的const值,但上面的代码片段在g ++ 4.4.3上运行正确且没有错误。
Que 2:如何解释此案?
感谢您的帮助!
答案 0 :(得分:0)
Q1: v[i] == 0
是一项特殊测试,用于检查C样式字符串(字符数组)末尾的null terminator character
,\0
。在C ++中,这是char数组的工作方式:
char word[] = "dog";
//Index: d-0, o-1, g-2, \0-3 \0 is a special char that signal string end
0
是空终止字符i != 0
的整数ascii代码,用于检查数据是否有效。
Q2:你很幸运,G++
支持variable size arrays