[C/C++] Function pointer.

This is example for using function pointer in C. (basically, C++ case can be easily inferred from C’s one)

Syntax related with function pointer type is quite different from other normal(?) one.
So, here is summary.

* type definition
typedef void (*<type name>) (int, void*);

* variable definition
void* (*<var name>) (int, void*) = NULL;
=> define function pointer variable that’s type is “void*(*)(int, void*)” and initialize it into ‘NULL’.

* type casting.
fpointer1 = (void*(*)(int, void*)) fpointer2;
=> cast function pointer ‘fpointer2’ into “void(*)(int,void*)” type.

* function that returns function pointer – float(*)(float, float).
=> float (*get_ptr(char c))(float, float); <- parameter is “char c”, return type is “float(*)(float, float)”

* function – returns function pointer – pointer variable .
=> void(*(*var_name)(char c)) (void*); <- return function pointer type is “void(*)(void*)”, parameter is “char c” and variable name is ‘var_name’

* declare function pointer variable whose return type is function pointer.
=> int(* (*get_func)(int))(int, int); <- parameter of function is “int” And it returns function pointer “int(*)(int,int)”

* typecasting to function pointer whose return type is function pointer.
=> int(*(*)(int))(int, int); <- pointed function’s return type is “int(*)(int,int)&quot;.

* array of function pointer.
=> static int(*array_name[])(float) = { … }; <- “int(*)(float)” typed function pointer array.

* pointer of function pointer
=> void*(**<var name>)(int, void*); <- <var name> is pointer of function pointer. it’s type is “void*(**)(int, void*)”

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s