從函數調用返回後,我無法獲取結構的嵌套數組來保留其成員。嵌套數組結構的問題
以下是我在頭文件(可讀性冷凝結構成員)定義:
typedef struct {
char *name;
} weapon;
#define MAX_SHOP_ITEMS 10
struct shop {
weapon items[MAX_SHOP_ITEMS];
};
typedef struct {
char *name;
struct shop shop;
} location;
我使用這些函數將成員添加到結構的shop.items []數組。所述beginnerWeapon []是類型的武器,並具有元件0和1在另一文件中聲明:
void PopulateShop(location loc)
{
printf("DEBUG: character location pointer: %s\n\n\n", loc.name);
loc.shop.items[0] = beginnerWeapons[0];
loc.shop.items[1] = beginnerWeapons[1];
printf("DEBUG: loc.shop.items[0].name: %s\n\n\n", loc.shop.items[0].name);
}
void ShowItems(location loc)
{
printf("DEBUG: location pointer in ShowItems(): %s\n\n\n", loc.name);
printf("DEBUG: loc.shop.items[0].name: %s\n\n\n", loc.shop.items[0].name);
}
現在,當我的位置傳遞給從通過此功能的另一文件中的每個函數:......
void ShopMenu(location loc)
{
PopulateShop(loc);
ShowItems(loc);
}
...調試顯示兩個函數中的位置名稱正確,正確的武器名稱出現在PopulateShop()中,但shop.items []數組更改在我調用ShowItems()時不會粘住。我不確定是否需要爲.items []分配內存,或將其外部化,或者傳遞指針(我不完全確定如何處理下標),或者我可能會錯誤地定義商店。任何幫助表示讚賞!
常見問題。 C中的函數參數是按值傳遞的。函數內部對函數參數的更改對調用者的值沒有影響。如果要更改原始結構,請傳入指針。 – kaylum
[將結構體傳遞給函數](https://stackoverflow.com/questions/10370047/passing-struct-to-function) – kaylum
可能的重複問題可能還在於如何分配和複製'name'。 – chux