C++ 指向函数的指针作为参数

标签 c++ function pointers

#include<iostream>

using namespace std;

void passPointer(int *pointer)
{
    cout << *pointer;
}

int main()
{
    int *iNum = new int(25);

    passPointer(iNum);

    return 0;
}

有人能给我解释一下为什么当我在 main 中使用 passPointer() 函数时,它必须是 passPointer(iNum) 而不是 passPointer(* iNum)?是因为如果我使用 *,我会在参数中取消引用它吗?请尽可能详细地解释,因为我有点困惑。

谢谢大家。

最佳答案

这是因为你声明了passPointer来接受一个参数 输入 int*iNum 的类型为 int*,因此可以直接传递给 传递指针*iNum 的类型为 int,并且没有隐式 intint* 的转换,所以你不能将它传递给 passPointer

更一般地说,在 C++ 中(以及几乎所有其他类型的语言,如 好吧),每个表达式和每个变量都有一个类型。的类型 表达式是根据其操作数的类型来表示的:如果 一元 * 的操作数类型是 T* (并且类型必须是 指针),那么结果的类型是T。并调用一个函数, 您必须提供正确数量的参数和正确的类型。

关于C++ 指向函数的指针作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7685862/

相关文章:

c++ - 如何使python函数作为c++函数的回调

c++ - 类对象的模板参数

c++ - malloc 和 new 是否返回一个 int 对齐的地址?

c - 如何修改已传递给 C 函数的指针?

c++ - 数组指针,(*ptr)[] 和 *ptr[] 有什么区别

c++ - 删除二维链表数组,如何?

c++ - 如何正确分解代码?

php - 使用 PHP 将多个变量传递给函数的最佳实践是什么

javascript - 在javascript中需要帮助包装函数并正确处理 "this"

将十进制转换为十六进制时一次仅考虑 4 位