在c或c++中,如何区分在内存地址上设置的0和由于该地址未初始化而设置的0
in c or c++, how can you distinguish between 0 which is set on an address in memory and 0 which is set because that address is not initialized?
我的代码中有一个if条件,我检查在内存中的特定地址中设置的值。如果这个值是0,那么我假设这个地址没有设置,并将执行一些操作。但也有可能在我做这个检查时,value为0因为我在代码的其他地方设置了它为0。我如何区分这两种情况?
你没有。没有办法区分0和0
你不能。你需要定义一个额外的静态变量,比如
int initialized = 0;
并将其设置为1
,当您为内存位置分配任何新值时。然后可以测试if(initialized)...
区分0和0。
不能区分不同的'0',0就是0。用一个二元变量表示两个以上的状态本身也是困难的。据我所知,你不止有两个州。1. 变量=0未初始化,执行操作。2. 变量=1初始化,做其他事情。3.变量=0并初始化,做不同的事情。如果不使用附加信息,就无法理解状态。因此,您可以使用另一种数据结构来保存更多信息。
这两个零是无法区分的。
您可以使用std::pair<T, bool>
封装T
类型变量的初始化状态(在bool中)。
(std::pair<T, bool>
在c++标准库中用作插入std::map
的返回值)
相关文章:
- 循环中的变量被设置为下一个数组的元素始终具有相同的内存地址?
- C 指针设置为地址,但莫名其妙地指出了程序的不同部分中的不同值
- 如何设置指针的内存地址
- 如何在NS3中设置节点的IP地址和数据?
- C 将值设置为特定地址
- 设置成员 GlobalCEFApp->OnWebKit使用函数地址初始化 C++生成器
- 将结构元素地址设置为C 中的null(单链接列表)
- 在C++中设置节点的内存地址
- 定义一个C宏并将内存地址设置为用C和C++编写的结构成员
- 从指针数组的元素传递地址以设置另一个指针地址
- mfc c++通过编辑控件设置另一个应用程序的HWND地址
- 如何将数组中元素的地址设置为指向另一个数组中的特定元素
- 如何将源IP地址设置为0.0.0.0
- 正在将IPv4/IPv6地址和端口设置为sockaddr_storage结构
- 在 Boost ASIO 中,如何设置源 IP 地址以模拟其他服务器的 IP 地址?
- 为什么我不能为我的 QTcpServer 设置特定地址?
- 将指针设置为 nullptr 是否会影响指向同一地址的其他指针
- 在c或c++中,如何区分在内存地址上设置的0和由于该地址未初始化而设置的0
- 设置随机内存地址的值
- 如何在Windows中设置存储在内存地址中的陷阱