【问题标题】:Why can I pass a variable to a function that should take a pointer? [duplicate]为什么我可以将变量传递给应该采用指针的函数? [复制]
【发布时间】: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++


【解决方案1】:

因为 C 风格的数组会衰减为指针。

不要使用 C 样式的数组,使用 std::arraystd::vector

【讨论】:

    猜你喜欢
    • 2021-12-04
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多