Tuesday 8 November 2011

How do you use a pointer to a function? in C programming

How do you use a pointer to a function?

The hardest part about using a pointer-to-function is declaring it. Consider an example. You want to create
a pointer, pf, that points to the strcmp() function. The strcmp() function is declared in this way:
int strcmp( const char *, const char * )
To set up pf to point to the strcmp() function, you want a declaration that looks just like the strcmp()
function’s declaration, but that has *pf rather than strcmp:
int (*pf)( const char *, const char * );
Notice that you need to put parentheses around *pf. If you don’t include parentheses, as in
int *pf( const char *, const char * ); /* wrong */
you’ll get the same thing as this:
(int *) pf( const char *, const char * ); /* wrong */
That is, you’ll have a declaration of a function that returns int*.

NOTE
For what it’s worth, even experienced C programmers sometimes get this wrong. The simplest thing to do is remember where you can find an example declaration and copy it when you need to. After you’ve gotten the declaration of pf, you can #include <string.h> and assign the address of strcmp()
to pf:
pf = strcmp;
or
pf = & strcmp; /* redundant & */
You don’t need to go indirect on pf to call it:
if ( pf( str1, str2 ) > 0 ) /* ... */

Cross Reference:

VII.14: When would you use a pointer to a function?

No comments:

Post a Comment