When you want to change a pointer, you need to pass a pointer to that pointer as a parameter. This is the correct function:
function create_my_bmap (BMAP** this)
{
BMAP* fb = bmap_createblack (256,256,24);
// do something with fb
...
//
*this = fb;
}
But instead of changing a parameter its better when the function returns the bitmap pointer:
BMAP* create_my_bmap ()
{
BMAP* fb = bmap_createblack (256,256,24);
// do something with fb
...
//
return fb;
}