读取函数指针语法

bob*_*obo 3 c++ function-pointers

每次我看一个C函数指针,我的眼睛都会茫然.我看不懂.

这里,这里有两个函数指针TYPEDEFS的例子:

typedef int (*AddFunc)(int,int);
typedef void (*FunctionFunc)();
Run Code Online (Sandbox Code Playgroud)

现在我习惯了这样的事情:

typedef vector<int> VectorOfInts ;
Run Code Online (Sandbox Code Playgroud)

我读到的是

typedef vector<int> /* as */ VectorOfInts ;
Run Code Online (Sandbox Code Playgroud)

但我无法阅读上面的2个typedef.包围和星号放置,这是不合逻辑的.

为什么*旁边的单词AddFunc ..?

Mar*_*off 5

当你理解它时,只需忽略typedef函数名称周围的括号和名称前面的星号.那你有int AddFunc(int,int);.

括号中的要点(*functionName)是具体*使用typedef的名称进行分组.的*,表明这是一个功能是必要的指针.

所以任何以ints为参数并返回int符合AddFunc"接口"的函数,如果你愿意的话.同样,任何不接受参数的函数返回void都可以用于a FunctionFunc.