1. 程式人生 > >聲明一個返回特定類型函數指針的函數

聲明一個返回特定類型函數指針的函數

參數 函數 log post gpo tro ati 一個 表示

static void (* __set_malloc_handler(void (*__f)()))()
{
void (* __old)() = __malloc_alloc_oom_handler;
__malloc_alloc_oom_handler = __f;
return(__old);
}

理解步驟:

一: void(*func)();

f是一個函數指針,指向的函數類型就是 void (*func)()

或者說是 void f() 總之 func指向一個無參數的函數

二: __set_malloc_handler( void (*__f)() ) 這是一個整體;

這個整體如果替換掉上部分的func 就變成了:

void (* __set_malloc_handler(void (*__f)()))();

三: 因此 __set_malloc_handler( void (*__f)() ) 這個東西在

void (* __set_malloc_handler(void (*__f)()))();中表示一個函數指針,

並且這個指針指向一個無參數函數。

也就是這個東西__set_malloc_handler( void (*__f)() ) 的返回值是一個函數指針

四:換種寫法:

void(*ptrType)();

ptrType __set_malloc_handler( void (*__f)() )();

聲明一個返回特定類型函數指針的函數