为什么我有一个无限循环,我该怎么做呢?

时间:2018-04-13 07:43:38

标签: c++

只是学习..我无法理解我做错了什么 我只是尝试计算字符串中的char数。

while循环没有结束 - 无限循环

这是代码

int main() {
    char buffer[255] = { 0 };
    sprintf_s(buffer, "hello world");
    char* ptr = buffer;
    int count = 0;
    while (ptr != null)
    {
        count++;
        ptr++;
    }

    std::cout << count << std::endl;
    std::cin.get();
}

顺便说一句 - 我不想使用strlen或一些内置函数。

1 个答案:

答案 0 :(得分:5)

理论上你的指针永远不会为空。

您正在寻找的是检查它是否指向字符串的空终止符,这是非常不同的,并通过例如检查来检查*ptr == '\0'。请注意使用解除引用运算符*来获取ptr当前指向的值。

实际上,指针有时会达到其大小范围的结尾,溢出并变为零,这是一个空指针。但是,如果您使用的是64位系统,可能距离非常远,而且超出了字符串的末尾。