问题描述
我对C ++很陌生。我在一般的编程方面,尤其是在C语言方面有一些经验。 我有一个我正在尝试理解的其他人编写的c ++项目,它包含以下格式的几个变量声明:
uint64_t(*const col_timestamp)(const uint8_t* col_buf);
我无法理解这意味着什么。它甚至是变量声明吗?我会理解常量指针col_timestamp
指向类型uint64_t
的变量和指针col_buf
指向类型const uint8_t
的变量的两个单独的声明,如下所示:>
uint64_t * const col_timestamp;
const uint8_t * col_buf;
但是我不认为这是什么意思,因为那时我看不出用这种方式编写它的理由。非常感谢您的帮助,因为我有点被困在这里。
很抱歉,如果这是一个重复的问题,但是我根本不知道要搜索什么,我想这对于熟悉c ++的人来说很简单。
谢谢!
解决方法
此
uint64_t(*const col_timestamp)(const uint8_t* col_buf);
是对函数的常量指针的声明,该函数的返回类型为uint64_t
,并且参数类型为const uint8_t *
。
例如,如果您有一个声明为
的函数uint64_t func_col_timestamp( const uint8_t *col_buf );
您可以声明并初始化一个指向类似函数的指针
uint64_t(*const col_timestamp)(const uint8_t* col_buf) = func_col_timestamp;