我瀏覽儘管XCB來源,我發現這個怪異的結構成員:'void(* return_socket)(void * closure);'意思?
void (*return_socket)(void *closure);
這是什麼意思?什麼是寫這個的另一種方式?
我瀏覽儘管XCB來源,我發現這個怪異的結構成員:'void(* return_socket)(void * closure);'意思?
void (*return_socket)(void *closure);
這是什麼意思?什麼是寫這個的另一種方式?
這是一個函數指針。 它指向返回void
並接收void *
作爲參數的函數。
例如,你可以使用它作爲:
void myFunction(void *closure)
{
printf("myFunction called with closure=%p", closure);
}
void (*return_socket)(void *closure) = myFunction;
我還是不太明白這個表示法。如果'void'是返回值,並且'void * closure'是參數,那麼中間的位是什麼? '(* return_socket)'。 –
'return_socket'是變量名。代替**標識符**作爲函數名稱,您使用**星號**和**標識符**來表示它是函數指針。 您可以稍後使用'return_socket = myFunction2;' – Spidey
分配給它哦,我看到,'*'表示它是一個指針。如果語法是'void(void * closure)* return_socket',但是很好,會更有意義。我會在6分鐘內接受答案。 –
這是一個'指針function',要求需要一個指向某個數據(儘管該文件或代碼,會告訴你什麼)的功能一個參數,並且什麼都不返回。 – AntonH