传递指针以更改其值但保持静止

我正在使用Allegro库开发C ++。

有draw_tiles函数。

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);
        }
    }

}


和loadTilemap函数。

void loadTilemap(int i,BITMAP * tileLayer){
    char c[128];
    sprintf(c,TILEPATHFORMAT,i);
    tileLayer= load_bitmap(c,NULL);
}


我预计

以下代码将TileMap更改为指向某处的位置

loadTilemap(s_world->tilemap,TileMap);


但是在loadTilemap之后,TileMap变量保持不变。

以下代码效果很好

char c[128];
sprintf(c,TILEPATHFORMAT,i);
tileLayer= load_bitmap(c,NULL);


tileLayer点数0x003f93f8

如何将我的代码固定到TileMap点的load_bitmap返回值?

最佳答案

您正在按值传递指针,因此将创建指针的副本。在loadTilemap中,您正在为指针的副本分配一个新值-但这不会影响原始指针。

尝试通过将loadTilemap函数签名更改为此来通过引用传递指针:

void loadTilemap(int i,BITMAP *& tileLayer);

09-12 09:23