私は "自動車フリート"管理ツールを実装しています。
リンクされたリストのcの頭のアドレスを失う
typedef struct Car{
char ID[9];
struct Car* next;
} Car;
私の艦隊は、単に車のリンクリストになります:スタートのために、私は「車」構造体を宣言しました。空の頭から始め、add_car関数を使ってリンクを追加します。
void add_car (struct Car* cars_fleet){
struct Car* car = malloc (sizeof (car));
scanf("%s",car->ID);
car->next = NULL;
if (cars_fleet == NULL){
printf ("creating new list\n");
cars_fleet = car;
}
else {
printf ("appending\n");
Car* tmp = cars_fleet;
while (! (tmp->next == NULL))
tmp = tmp->next;
tmp->next = car;
}
}
そして、これは私のメインプログラムである:
int main(){
Car* cars_fleet = NULL;
add_car(cars_fleet);
}
彼らは最初のものであるかのように今、何らかの理由で、私のプログラムは、すべてのリンクを扱います。おそらく "cars_fleet = car"という、間違ったメモリ割り当てが原因で起こっていると思います。ヒント、ヒント、または解決策はありますか?ありがとう。
ありがとう。あなたはadd_car
内のローカル変数に割り当てる
書式設定/インデント:( –
'add _car(cars_fleet); 'は値渡しのため、cars_fleetを変更することはできません。 –
ここで正しい構文は何でしょうか?フリートがポインタであり、add_carsがカーへのポインタを受け取った場合、フリートのアドレスを変更できないのはなぜですか?おそらく私は最初のIF句の中に新しい車をmallocする必要がありますか? –