Ein Zeiger eine Variable wie jede andere viel ist, mit der Ausnahme, dass für einen Zeiger, T* ptr
, wird sein Wert erwartet die Adresse eines sein, Instanz von T im Speicher.
Sie haben ein Array nicht initialisierter Variablen erstellt - Sie haben sie nicht auf etwas ausgerichtet.
Denken Sie an einen Zeiger als Post-it-Notiz mit der Lage eines Dinges darauf. Was Sie getan haben, ist 36 leere Post-It-Notizen von der Spitze des Stapels zerrissen.
Sie müssen einige Gepäcktags erstellen, auf die Sie verweisen können, aber Sie sind auch dafür verantwortlich, diese Objekte freizugeben.
struct luggageTag{
int seat;
bool luggage;
};
int main(){
luggageTag *tagBox[36];
for (size_t i = 0; i < 36; ++i) {
tagBox[i] = new luggageTag;
}
tagBox[2]->luggage = true;
// memory leak unless you do:
// for (size_t i = 0; i < 36 ; ++i)
// delete tagBox[i];
}
Alternativ Sie einen Zeiger auf ein Array von 36 Gepäckanhänger schaffen könnte:
struct luggageTag{
int seat;
bool luggage;
};
int main(){
luggageTag *tagBox = new luggageTag[36];
tagBox[2]->luggage = true;
// ...
delete [] tagBox; // free the memory
}
Ist dies nicht Teil einer Schule Übung ist, können Sie bei Verwendung eines std::array
oder std::vector
suchen.
'tagBox [2] -> Gepäck' bedeutet '(* tagBox [2]). Gepäck', richtig? So dereferenziert 'tagBox [2]'. Was zeigt 'tagBox [2]'? – immibis
Ahh, ich verstehe es jetzt. Dein Kommentar macht es viel klarer. Vielen Dank! –