传递指针改变它的值但保持不动
我正在使用 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);
但在加载 Tilemap 之后,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);
关于c++ - 传递指针以更改其值但保持不动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7176792/