C++ c++;memcpy读存储器

C++ c++;memcpy读存储器,c++,memcpy,C++,Memcpy,我正在尝试使用memcpy来读取内存 BYTE test[] = {0x01}; BYTE test2[] = {0x00}; memcpy (test, test2, sizeof(test)); if (test == test2){ MessageBox::Show("Same"); }else{ MessageBox::Show("Different"); } 为什么测试和测试2总是不同 感谢您的帮助。因为您正在测试数组地址的相等性。尝试改用memcmp。因为您正在测试

我正在尝试使用memcpy来读取内存

BYTE test[] = {0x01};
BYTE test2[] = {0x00};
memcpy (test, test2, sizeof(test));
if (test == test2){
    MessageBox::Show("Same");
}else{
    MessageBox::Show("Different");
}
为什么测试和测试2总是不同


感谢您的帮助。

因为您正在测试数组地址的相等性。尝试改用
memcmp

因为您正在测试数组地址的相等性。尝试改用
memcmp

您正在比较
test
test2
的地址。改用
memcmp

您的代码相当于

if (&test[0] == &test2[0]){
改成

if (memcmp(test, test2, sizeof(test)) == 0)

应按预期工作。

您正在比较
test
test2
的地址。改用
memcmp

您的代码相当于

if (&test[0] == &test2[0]){
改成

if (memcmp(test, test2, sizeof(test)) == 0)

应按您的预期工作。

当数组的名称单独使用时,它会变成一个指针,因此您是在比较两个数组的地址,而不是它们的内容。

当数组的名称单独使用时,它会变成一个指针,因此您是在比较两个数组的地址,不是它们的内容。

您对
test==test2
的期望是什么?内存地址总是不同的,这就是您正在测试的内容。您更喜欢标准容器(例如)而不是数组。那么这样的比较就行了。您对
test==test2
的预期是什么?内存地址总是不同的,这就是您正在测试的内容。您更喜欢标准容器(例如)而不是数组。这样的比较就行了。