typedef void (*void_fptr)();

void show_a()
{
    printf("This is show_a function\n");
}

void_fptr func_gen(void_fptr func)
{
    int a = 500;
    printf("fptr = %d, address of fptr = %p\n",func,&func);
    printf("a = %d, address of a = %p\n",a,&a);
    void inside_func(void) {
        printf("\nbegin inside_func { \n\n");
        printf("fptr = %d, address of fptr = %p\n",func,&func);
        printf("a = %d, address of a = %p\n",a,&a);
        printf("\n} inside_func \n");
    }
    return &inside_func;
}
int main()
{
    void_fptr ptr;
    ptr = func_gen(&show_a);
    (*ptr)();

    return 0;
}