这种情况如何成立
How does this condition hold
我有以下函数,它是Trie结构实现的一部分:
int alpha_char_strlen (const AlphaChar *str) {
const AlphaChar *p;
for (p = str; *p; p++) ;
return p - str;
}
任何人都可以帮助我解释一下 for 循环的条件是如何成立的,以及在这种情况下的条件究竟是什么?
注意:AlphaChar 只是一个具有无符号 int 类型的 typedef,该函数计算 AlphaChar 字符。
条件*p
与*p != 0
相同(如果*p
是基元类型)。也就是说,您不断递增指针p
,直到它指向零。换句话说,您将str
视为指向以零结尾的数组的指针。
条件是 *p
,是 *p!=0
的缩写。
因此,它只是扫描 AlphaChar 数组以查找出现次数为 0。
相关文章:
- 在没有太多条件句的情况下,我如何避免被零除
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 函数中堆分配的效果与缺少堆分配的情况
- 在未初始化映射的情况下,将值插入到映射的映射中
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 是默认情况下分配给char数组常量的值
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 如何在不产生任何垃圾的情况下获得C中的像素
- 在已经使用Git的情况下减少编译时间
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 如何在没有信号的情况下从C++执行QML插槽
- 如何在不知道向量大小的情况下输入向量内部的向量?
- 如何针对特定情况调试和修复此双自由内存损坏问题
- 为什么在某些情况下不写入此文件?
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 在没有Xcode的情况下在Mac捆绑包中嵌入框架
- Python中的for循环与C++有何不同
- 为什么我可以在不链接任何额外库的情况下包含 sys/*.h
- 这种情况如何成立
- 在没有 new 关键字的情况下初始化C++对象的内存从何而来