Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将整数重新初始化/设置为空值_C++ - Fatal编程技术网

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%确定,因此我要求开始。