我有string a
。
for循环a[i]
中的条件for(int i = 0; a[i]; i++)
是什么意思?
答案 0 :(得分:2)
变量i
初始化为0
,然后递增直到a[i]
为(或转换为)false,即a[i]==0
。因此,i
遍历字符串中的所有字符,直到第一次出现\0
。对于通常的以null结尾的字符串,这相当于
for(auto c:a)
答案 1 :(得分:2)
for(int i = 0; a[i]; i++)
与for(int i = 0; a[i] != 0; i++)
具有相同的含义,这意味着"进入循环,直到元素a[i]
获得0
;如果a
是一个字符串,则表示"进入循环,直到a[i]
指向字符串终止字符\0
。
但请注意,C ++提供了迭代字符串字符的其他方法,例如for (auto c : a) { cout << c << endl; }
答案 2 :(得分:1)
在这种情况下“for(int i = 0; a [i]; i ++)”,你的循环保持执行,直到其中一个元素为空元素。总是当你看到这个表达式时,它总是与检查元素是否为null的含义相同,以便停止循环。
然而,该循环具有未定义的行为,因为如果索引i将达到最大数组的大小。您可能会收到该类型的运行时错误:
超出范围数组大小或尝试访问内存空值空间时出错。
我希望我的回答,它适合你的问题..
答案 3 :(得分:-2)
逐个搜索字符串指针数组的字符。但是,因为它在代码中定义为字符串,所以会发生编译时错误。