【发布时间】:2022-07-05 23:48:28
【问题描述】:
我有一个函数应该指向一些数据(在这种情况下是一个数组)
unsigned int someclass::foo(const void* data)
但是用下面的代码调用它编译和运行没有问题
float someData[] = {1.0f, 2.0f};
unsigned int Result = someclass.foo(someData);
然而,不仅如此,而且通过引用传递它,据我所知,它应该可以工作,也可以完美运行,即使在一种情况下,我传递了一个变量,而在另一种情况下,我传递了对一个变量的引用。
float someData[] = {1.0f, 2.0f};
unsigned int Result = someclass.foo(&someData);
为什么这两个行为相同?我对指针的理解是否遗漏了一些关键的东西?
【问题讨论】:
-
数组衰减为一个指针。请提供minimal reproducible example,因为它应该在 C++ 中失败(没有从
float*转换为void*并且在C中应该没问题。
标签: c++