C++ 在c或c+中+;,如何区分内存中某个地址上设置的0和由于该地址未初始化而设置的0?

C++ 在c或c+中+;,如何区分内存中某个地址上设置的0和由于该地址未初始化而设置的0?,c++,memory,C++,Memory,我的代码中有一个if条件,我检查内存中特定地址中设置的值。如果这个值是0,那么我假设这个地址没有设置,并且将执行一些操作。但也可能有这样的情况,我做这个检查,值是0,因为我在代码中的其他地方将它设置为0。我如何区分这两种情况 你没有。没有办法区分0和0。你没有。没有办法区分0和0。你不能。您必须定义附加的静态变量,比如 int initialized = 0; 当您为内存位置分配任何新值时,将其设置为1。然后您可以测试是否(已初始化).以区分零和零。您不能。您必须定义附加的静态变量,比如 in

我的代码中有一个if条件,我检查内存中特定地址中设置的值。如果这个值是0,那么我假设这个地址没有设置,并且将执行一些操作。但也可能有这样的情况,我做这个检查,值是0,因为我在代码中的其他地方将它设置为0。我如何区分这两种情况

你没有。没有办法区分0和0。

你没有。没有办法区分0和0。

你不能。您必须定义附加的静态变量,比如

int initialized = 0;

当您为内存位置分配任何新值时,将其设置为
1
。然后您可以测试
是否(已初始化).
以区分零和零。

您不能。您必须定义附加的静态变量,比如

int initialized = 0;

当您为内存位置分配任何新值时,将其设置为
1
。然后您可以测试
是否(已初始化).
以区分零和零。

您无法区分不同的“0”,0是0。 用一个二元变量表示两个以上的状态本身也是困难的。 据我所知,你们有两个以上的州。 1.变量=0未初始化,请执行操作。 2.变量=1已初始化,请执行其他操作。 3.变量=0且已初始化,执行不同的操作。 如果不使用其他信息,就无法了解状态。
因此,您可以使用其他数据结构来保存更多信息。

您无法区分不同的“0”,0是0。 用一个二元变量表示两个以上的状态本身也是困难的。 据我所知,你们有两个以上的州。 1.变量=0未初始化,请执行操作。 2.变量=1已初始化,请执行其他操作。 3.变量=0且已初始化,执行不同的操作。 如果不使用其他信息,就无法了解状态。
因此,您可以使用另一种数据结构来保存更多信息。

这两个零无法区分

您可以使用
std::pair
封装
T
类型变量的初始化状态(在bool中)


(<代码> STD::配对< /代码>作为C++代码库中使用的插入值返回到 STD::MAP< /COD>)

< P>两个零点是不可区分的。< /P> 您可以使用
std::pair
封装
T
类型变量的初始化状态(在bool中)


(<代码> STD::配对< /代码>作为C++代码库中使用的插入值返回到STD::MAP)

显示代码而不是描述它。无法区分0和0。您可以将地址未设置的信息存储在另一个变量中(
1
->set,
0
->not set)。显示代码而不是描述它。您不需要。无法区分0和0。您可以将地址未设置的信息存储在另一个变量中(
1
->set,
0
->not set)。