【发布时间】:2021-02-28 16:37:49
【问题描述】:
为什么下面的代码会报错?
// This a CPP Program
#include <bits/stdc++.h>
using namespace std;
// Driver code
main()
{
string s=NULL;
s.length();
}
我知道会发生运行时错误,因为我试图获取空字符串的长度,但我想知道为什么会这样?
【问题讨论】:
-
没有空字符串这样的东西(除非“null”是指空的,但你不知道)。您正在尝试使用具有未定义行为的空指针初始化字符串。
-
我的建议是使用
string s;默认构造函数已经将字符串初始化为空字符串。 -
这不是有效的 C++。
main需要int返回类型。 -
“我知道会发生运行时错误...” 未定义的行为不需要这样。 "...因为我正在尝试获取空字符串的长度..." 这是不正确的,运行时错误发生在此之前。 "...但是我想知道为什么会这样?"因为程序无效,因为它有未定义的行为,因为代码将NULL传递给字符串构造函数.