passing pointer to change its value but stay still
I am working on C++ with allegro library.
there is draw_tiles function.
void draw_tiles(def_small_world * s_world,BITMAP * dest){
BITMAP *TileMap=NULL;
loadTilemap(s_world->tilemap,TileMap);
for(int y = 0;y<SIGHTY*2+1;y++)
{
for(int x = 0;x<SIGHTX*2+1;x++)
{
pasteTile(s_world->tile[y][x].kind,TileMap,dest,x,y);
}
}
}
and loadTilemap function.
void loadTilemap(int i,BITMAP * tileLayer){
char c[128];
sprintf(c,TILEPATHFORMAT,i);
tileLayer= load_bitmap(c,NULL);
}
I expect
following code change TileMap to points somewhere
loadTilemap(s_world->tilemap,TileMap);
but after loadTilemap, the TileMap variable stay still.
the following code works very well
char c[128];
sprintf(c,TILEPATHFORMAT,i);
tileLayer= load_bitmap(c,NULL);
tileLayer points 0x003f93f8
How to fix my code to TileMap points return value of load_bitmap?
You are passing the pointer by value, so a copy of the pointer is created. Inside
loadTilemap, you are assigning a new value to the copy of the pointer – but that doesn’t affect the original pointer.Try passing the pointer by reference by changing the
loadTilemapfunction signature to this: