*:*变量与变量*的位置有什么区别

时间:2019-02-08 08:05:13

标签: c++ pointers arduino

我当前正在使用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函数中,内部没有空隙,为什么里面也有另外2个括号(* handleBlinkDevice)(DW1000Device *)?

static void attachBlinkDevice(void (* handleBlinkDevice)(DW1000Device*)) { _handleBlinkDevice = handleBlinkDevice; };

2 个答案:

答案 0 :(得分:3)

  

1)当在变量(例如DW1000Device *)的后面添加*时,是什么意思,似乎无法在线找到答案。通常只看到前面使用的*。

     

静态无效(* _handleBlinkDevice)(DW1000Device *);

DW1000Device 不是变量名,而是类型名

_handleBlinkDevice是一个变量,其类型是不返回任何内容( void )并在参数中获取指向 DW1000Device

的指针的函数。
  

2)您如何在函数中理解void和void,还如何使用(function1)(function2)(请参见下面的复杂代码块)

     

静态无效(* _handleNewRange)(无效);

_handleNewRange是一个变量,其类型是不返回任何内容( void )并且不获取参数的函数

答案 1 :(得分:0)

此符号表示一个函数指针,void是其返回类型,(* pointer_name)是指针名称,(Type*)是参数列表,在这种情况下,参数是一个指向DW1000Device