February 26, 2009

[C/C++] Указатель на функцию

С функцией мы можем сделать две вещи:
-вызвать ее;
-получить ее адрес;
Если мы получим адрес функции и присвоим его какому-то указателю, то в дальнейшем сможем использовать этот адрес для вызова функции.
--------------------------------------------------------------------------------------------
/* функция, которая ничего не возвращает */
void function(){ printf( "Hello wrold" ); } /* обьявление функции */
void ( *pointer )( void ); /* обьявление указателя */

int main( int argc, char *argv[] ){
pointer = &function; /* берем адрес функции */
pointer(); /* вызов функции function() через ее адрес */
return 0;
}

/* функция, которая что-то возвращает */
char* function(){ /* обьявление функции */
static char *str = "HelloWorld";
return str;
}

char*( *pointer )( void ); /* обьявление указателя */

int main( int argc, char *argv[] ){
pointer = &function; /* берем адрес функции */
printf( "%s\n", pointer() ); /* вызов функции function() через ее адрес */
return 0;
}

/* функция, которая что-то принимает в качестве аргумента */
void function(const char *_s){ /* обьявление функции */
printf( "%s\n", _s );
}

void ( *pointer )( const char *); /* обьявление указателя */

int main( int argc, char *argv[] ){
pointer = &function; /* берем адрес функции */
pointer( "Hello world" ); /* вызов функции function() через ее адрес */
return 0;
}

--------------------------------------------------------------------------------------------

No comments: