#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
,并且没有隐式
int
到 int*
的转换,所以你不能将它传递给 passPointer
。
更一般地说,在 C++ 中(以及几乎所有其他类型的语言,如
好吧),每个表达式和每个变量都有一个类型。的类型
表达式是根据其操作数的类型来表示的:如果
一元 *
的操作数类型是 T*
(并且类型必须是
指针),那么结果的类型是T
。并调用一个函数,
您必须提供正确数量的参数和正确的类型。
关于C++ 指向函数的指针作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7685862/