《STL源码剖析》中void (* set_malloc_handler(void (*f)()))()分析
问题
在阅读《STL源码剖析》的时候,遇到了这么一个函数
先不说函数的意思,函数的形式我就没看懂…好多好多括号…
函数指针
函数指针就是指向函数的指针…
1 | /* 例一:函式指標直接呼叫 复制自WIKI*/ |
在《STL源码剖析》里的这个函数,实际上使用了函数指针作为参数
1 | void (*f)() |
函数指针作为返回值
1 | int (*test(int))(int, int) |
阅读方法是由内向外读,首先test有形参列表,所以是一个函数,并且参数只需要一个int,然后test的前面有一个*,所以返回一个指针,(*test(int))作为一个指针,有形参列表(int, int),所以这个指针指向函数,并且这个函数返回int类型的值。
分析
1 | void (* set_malloc_handler(void (*f)()))() |
首先,set_malloc_handler作为函数名,有一个形参,是void(*f)(),void(f)()是一个函数指针类型,指向返回值为void,参数为空的函数。这说明set_malloc_handler是函数,并且前面有,所以要返回指针,指针后面接着形参列表,为空(),说明是指向函数的指针,并且指向的函数返回类型为void。
《STL源码剖析》中void (* set_malloc_handler(void (*f)()))()分析