#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct
{
int app_id;
char msgbody[32];
}*p_msg;
void func(p_msg pmsg)
{
if(strlen(pmsg -> msgbody) > 0)
printf("app id = %d \nmessage = %s \n", pmsg -> app_id, pmsg -> msgbody);
else
printf("app id = %d \n",pmsg -> app_id);
}
/*
* prototype declaration
*/
void (*callback)(p_msg pmsg);
int main(void)
{
p_msg pmsg1;
// Dynamically allocate memory using malloc()
pmsg1 = (p_msg) malloc (128 * sizeof(char));
pmsg1->app_id = 100;
strcpy(pmsg1->msgbody, "This is a test\n");
/*
*Assign the address of the func to the function pointer "callback".
*Could be also written as ```callback = &func;```.
*/
callback = func;
/*
*Call the fuc.
*Could be also written as ```(*callback)(&msg1);```
*/
callback(pmsg1);
// Free the memory
free(pmsg1);
return 0;
}
使出我到现在为止对回调函数、结构体指针、内存分配的全部认识写了个这。