C++:使用 memcpy 时,myArray 和 &myArray 有什么区别?

标签 c++ arrays pointers reference memcpy

<分区>

Possible Duplicate:
How come an array’s address is equal to its value in C?

情况:

int x = 5;
unsigned char myArray[sizeof (int)];

这一行...

memcpy (&myArray , &x , sizeof (int));

... 产生与以下相同的结果:

memcpy (myArray , &x , sizeof (int));

我是 C++ 的新手,但我的印象是数组只是指向其数据的指针。当 &myArray 与 myArray 的工作方式相同时,我感到很震惊。我本以为它会试图复制到指针的地址,这将是非常糟糕的!

最佳答案

关于数组的两件事:

  • 数组“衰减”为其元素类型的指针。这就是第二个版本起作用的原因。看到这个:Is an array name a pointer?

  • 有“指向数组的指针”这样的东西。它们很少使用,但看起来像这样:


int a[5];
int (*b)[5] = &a; // pointer to an array of 5 ints

& 运算符在数组上使用时会为您提供指向数组类型的指针,这就是以下内容不起作用的原因:

int* b = &a; // error

因为memcpy的参数是一个void*,它接受任何指针类型,包括&myArraymyArray 工作。我会推荐使用 myArray,因为它更符合习惯。

关于C++:使用 memcpy 时,myArray 和 &myArray 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14639334/

相关文章:

C++ 使用模板时没有匹配的调用函数,链接器错误

c++ - 使用线程时测量执行时间

c - 我怎样才能成功地在文件 IO 中使用删除功能 -- C

php - 如何在PHP中将这个MPTT数组转换成树结构?

php - array_walk_recursive 返回值

c++ - 虚拟继承 : Error: no unique final overrider

c++ - 后缀评估很慢-优化?

arrays - 在C中交换2个数组

c++ - 将函数指针传递给 C++ 中的成员函数。出现错误

c - 将指针列表从一个结构重定向到另一个