C++ 如何将整数重新初始化/设置为空值
示例代码:C++ 如何将整数重新初始化/设置为空值,c++,C++,示例代码: bool running = true; while (running == true) { int x; cout << "Enter an integer: "; cin >> x; string y; cout << "Enter a string: "; cin >> y; first.S_Return
bool running = true;
while (running == true) {
int x;
cout << "Enter an integer: ";
cin >> x;
string y;
cout << "Enter a string: ";
cin >> y;
first.S_Return(x);
first.S_Return(y);
x=null; // null is not a recognised integer
y=null;
system("PAUSE");
}
bool running=true;
while(running==true){
int x;
cout>x;
弦y;
cout>y;
第一,S_返回(x);
第一,S_返回(y);
x=null;//null不是可识别的整数
y=null;
系统(“暂停”);
}
我想知道的是
如果我想将任何数据类型重新初始化为null值,比如当它们被声明时,有什么方法可以做到这一点,比如清除、删除、设置为null方法等。或者我需要删除指针并使用new和delete将它们放在堆上吗?C++没有“未初始化”的概念,甚至很少定义“显式未定义”的常见概念
关于“uninitialized”,本地作用域中不属于类类型的变量未初始化,并且在运行时无法检测此类变量是否已初始化。只有当这些变量之前被赋值时,程序员才能访问它们。否则,程序的行为是未定义的
关于“显式未定义”,程序员通常会在必要时将相应数据类型范围内的一个特定值视为“未定义”。例如,对于变量“int numochildren”,您可以定义一个值-1
,以表示子对象的数量未知或未计算。相反,对于指针,有一个名为nullptr
的常量,通常用作显式表示未定义状态的值。但请注意:像int*x
这样的声明不会将x
的值设置为nullptr
,除非在文件范围中定义了x
(即,是全局变量)
希望能有帮助
x=0;y=0代码>应该这样做。在C++中没有初始化为null。“如果我想将任何数据类型重新初始化为null值,例如当它们被声明时”,对于这些类型没有空值。当您声明变量时,内置类型的值是不确定的,而对于类类型(例如std::string
),则调用默认构造函数。因此不能重新初始化为null,因为它们最初没有初始化为null。考虑从A学习。只有指针是空的,并且设置它们的值是<代码> NulLPTR < /代码>,而不是<代码> null <代码>。如果你认为C++是java的,你就完全错了——这两种语言几乎不可能是更多的。different@TrevorLee请详细说明为什么您认为“可空变量”会提高效率(如您所建议的,通过new
和delete
在堆上进行分配比堆栈分配更昂贵)。目前,这没有多大意义。包括像std::string::npos
等遗留下来的奇怪实现;)这已经澄清了我的想法,但不是100%确定,因此我要求开始。