c++ - *的位置有什么区别:*变量与变量*
问题描述
我目前正在使用 Decawave DWM1000,并在网上找到了示例库 ( https://github.com/thotro/arduino-dw1000 )。我们打算为自己的目的操作库和代码函数。但是,该库可能不完整,并且使用了几种我不理解的语法。
1) 在变量后面添加 * 是什么意思(例如 DW1000Device*)似乎无法在线找到答案。通常只看到*用在前面。
2) 你如何理解函数中的 void 和 void 另外,你如何使用 (function1)(function2) (请参阅下面的复杂代码块)
QNS1 //在前面和后面使用 * 是什么意思,例如。(* _handleBlinkDevice)(DW1000Device*)
static void (* _handleNewRange)(void);
static void (* _handleBlinkDevice)(DW1000Device*);
static void (* _handleNewDevice)(DW1000Device*);
static void (* _handleInactiveDevice)(DW1000Device*);
QNS2 //函数attachBlinkDevice里面有void,为什么里面还有另外2个括号(*handleBlinkDevice)(DW1000Device*)?
static void attachBlinkDevice(void (* handleBlinkDevice)(DW1000Device*)) { _handleBlinkDevice = handleBlinkDevice; };
解决方案
1) 在变量后面添加 * 是什么意思(例如 DW1000Device*)似乎无法在线找到答案。通常只看到*用在前面。
静态无效(* _handleBlinkDevice)(DW1000Device*);
DW1000Device不是变量名而是类型名
_handleBlinkDevice
是一个变量,其类型是一个不返回任何内容 ( void ) 的函数,并在参数中获取一个指向DW1000Device的指针
2) 你如何理解函数中的 void 和 void 另外,你如何使用 (function1)(function2) (请参阅下面的复杂代码块)
静态无效(* _handleNewRange)(无效);
_handleNewRange
是一个变量,其类型是一个不返回任何内容 ( void ) 并且没有参数的函数
推荐阅读
- python - AttributeError:模块“vpython”没有属性“Modellearning”
- c# - 将对象动态转换回原来的样子
- javascript - javaScript(s) 是否会相互覆盖?
- javascript - RxJs Observable 没有下一个事件?
- android - notifyDataSetChanged() 不适用于 baseAdapter 和自定义 ListView
- python - 如何在 jinja2 中使用 if else 和 for 循环?
- javascript - 我可以在 mocha 输出中隐藏失败详细信息吗?
- qt - 如何在 eventFilter 处理程序返回之前获取当前索引?
- swift - Swift MapKit - 当我放大集群时我的地图崩溃了
- tags - 在不同页面上使用液体标签