函数指针需要&号吗?
Do function pointers need an ampersand
在C/c++中,如果我有以下函数:
void foo();
void bar(void (*funcPtr)());
这两个调用有区别吗?
bar(foo);
bar(&foo);
?
不,没有区别,因为函数可以隐式地转换为指向函数的指针。相关报价来自标准(N3376 4.3/1)。
函数类型T的左值可以转换为"指向T的指针"类型的右值,结果是指向函数。
这两个调用有区别吗?
bar(foo);
被称为"短"版本
bar(&foo);
是如何正式完成的
从功能上讲,没有区别,但是第二个选项被大多数人认为是"良好实践",因为这样更明显地表明foo实际上是一个函数指针而不是一个实际的函数。
这与数组类似。如果你有:
int foobar[10];
则foobar是一个int *,但您也可以使用&foobar来获得相同的结果。
相关文章:
- 函数向量_指针有不同的原型,我可以构建一个吗
- 删除指向指针的指针是运行时错误吗
- 我是c ++的新手,你能解释一下在这种情况下的指针吗
- 我可以制作指向智能指针的智能指针吗?
- OpenCV 我应该使用智能指针来防止内存泄漏吗?
- 指针会被解除分配吗?
- std::byte 指针应该用于指针算术吗?
- 指针投射:指针有价值吗?
- 作为指针注入类后重新创建堆栈对象不好吗?
- 我可以有一个 ELI5 作为参考和指针以及何时使用它们吗?
- 我可以使用 decltype() 或其他东西通过指针获取真实类型吗?
- 指向unique_ptr的指针 - 这是一个漏洞吗?
- 对于随机访问迭代器(矢量迭代器),迭代器C++样式指针吗?
- 如何创建指针链?我想创建具有指向更多对象的指针的对象,该对象具有指针.这可能吗?
- 你能用 c++ 做一个指向类的指针吗?
- 我们可以在不知道其真实类型的情况下将基类指针转换为派生类指针吗?
- *++*++ppp,*++pp[1],*++(*(1+ppp)有什么具体的区别吗?(C/C++指针问题)
- 在c++中存储指向磁盘上文件行号的指针
- 函数指针需要&号吗?
- CPLEX演唱会技术有自己的版本号吗?