c++ - 这个条件如何成立

标签 c++ pointers

我有以下功能,它是 Trie 结构实现的一部分:

int alpha_char_strlen (const AlphaChar *str) {
    const AlphaChar *p;
    for (p = str; *p; p++) ;
    return p - str;

谁能帮我解释一下 for 循环的条件是如何成立的,以及这种情况下的条件究竟是什么?
注意:AlphaChar 只是一个 unsigned int 类型的 typedef,该函数对 AlphaChar 字符进行计数。

最佳答案

条件 *p*p != 0 相同(如果 *p 是原始类型)。也就是说,您不断递增指针 p 直到它指向零。换句话说,您将 str 视为指向零终止数组的指针。

关于c++ - 这个条件如何成立,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10916020/

相关文章:

c++ - 如何在C++中使用条件检查typename T是否为整数类型的浮点类型

c++ - 与 Arduino 串行通信的字节顺序

php - 打印程序

c - 我是 C 语言的新手,这种段错误的东西快要了我的命

c++ - 如果传入 std::swap 的对象在交换期间抛出异常怎么办?

c++ - ToUnicode 调用 ToUnicodeEx 吗? ToUnicodeEx 在内核空间线程上改变了什么?

c - 在 C 中返回一个 void 指针作为函数参数

c++ - 为什么打印单向链表时有一个虚拟节点?

c - 如何在 C 中将 4 列文本文件读入两个字符数组?

c++ - 使用 for 循环和指针打印 float 组