在 main 中搜索字符串的结尾时出现分段错误,但不在函数C++中搜索



我正在尝试实现一个简单的字符串长度函数。如果我用 main 编写所有内容,代码会出错。但是,如果我声明一个 strlen 函数,那么它不会。为什么会这样?

为什么以下代码有效

using namespace std;
#include <iostream>
int strlen(char *s)
{
    char *p = s;
    while (*p != '')
        p++;
    return p - s;
}

int main()
{
    char *s;
    cin >> s;
    cout << strlen(s) << endl;
}

虽然这段代码有段错误?

using namespace std;
#include <iostream>
int main()
{
    char *s;
    cin >> s;
    char *p = s;
    while (*p != '')
        p++;
    cout << p-s << endl;
}

您尚未为 s 分配任何内存。它在一种情况下起作用而不在另一种情况下起作用的原因可能是因为C++中未定义行为的奇迹。

相关内容

  • 没有找到相关文章

最新更新