Указатель является переменной, так же, как и любой другой, за исключением того, что для указателя, T* ptr
, его значение, как ожидается, будет адрес экземпляр T в памяти.
Вы создали массив неинициализированных переменных - вы ничего не указали на них.
Подумайте о указателе как заметке с указанием местоположения вещи на нем. То, что вы наделали, разорвано 36 пустых сообщений, отмеченных сверху стека.
Вам нужно будет создать определенный багажник, чтобы указать, но тогда вы также несете ответственность за освобождение этих объектов.
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];
}
В качестве альтернативы вы можете создать указатель на массив из 36 багажных бирок:
struct luggageTag{
int seat;
bool luggage;
};
int main(){
luggageTag *tagBox = new luggageTag[36];
tagBox[2]->luggage = true;
// ...
delete [] tagBox; // free the memory
}
Если это не является частью учебного упражнения, вы можете захотеть взглянуть на использование std::array
или std::vector
.
'tagBox [2] -> багаж' означает' (* биркаBox [2]). Багаж', правый? Так что это разыменования 'tagBox [2]'. Что указывает 'tagBox [2]'? – immibis
Ahh, я понимаю это сейчас. Ваш комментарий делает это намного яснее. Благодаря! –