C++ C++;

C++ C++;,c++,pointers,equals,void,C++,Pointers,Equals,Void,空指针指向的内存大小是多少 在下面的示例中,我比较了两个指向相同“原始数据”但类型不同、大小不同的void指针……它是如何工作的?它是否链接到==运算符 #include <iostream> using namespace std; int main() { char a = 'a'; int b = 97; if ((void*)a == (void*)b){ cout << sizeof(a) << sizeo

空指针指向的内存大小是多少

在下面的示例中,我比较了两个指向相同“原始数据”但类型不同、大小不同的void指针……它是如何工作的?它是否链接到==运算符

#include <iostream>

using namespace std;

int main()
{
    char a = 'a';
    int b = 97;
    if ((void*)a == (void*)b){
        cout << sizeof(a) << sizeof(b) << endl;
    }
}
#包括
使用名称空间std;
int main()
{
字符a='a';
int b=97;
如果((无效*)a==(无效*)b){
库特
我正在比较两个指向相同“原始数据”但类型不同、大小不同的void指针…它是如何工作的?它是否链接到==运算符

#include <iostream>

using namespace std;

int main()
{
    char a = 'a';
    int b = 97;
    if ((void*)a == (void*)b){
        cout << sizeof(a) << sizeof(b) << endl;
    }
}
这不完全是您正在做的。您将
char
int
值解释为指向
void
的指针。在这种情况下,大小根本不重要

您很好地说明了为什么不使用C样式转换的一个原因,即不清楚它到底在做什么。可以在上找到规则。在您的案例中,它使用了
重新解释\u cast
,如果您首先在代码中看到它,这应该是一个危险信号

将整数强制转换为指针是指向特定内存地址的一种方法,它远远不是您想要的。但是比较很可能是正确的,因为
'a'
通常是97(0x61)。因此您实际上是在询问
0x61==0x61

回答你的问题

空指针指向的内存大小是多少


,这与您发布的代码无关,它是特定于平台的,很可能是4或8字节。

请澄清您想要实现的目标。指针的大小将取决于您的应用程序是32位还是64位。对于32位应用程序,指针大小将是4字节,对于64位应用程序,指针大小将是8字节,比较结果将始终为真。另请参阅还有。