Cześć wszystkim!
Ostatnio czytałem trochę o strukturach i wskaźnikach, podjałem się napisania prostego programu zawierającego dynamiczną tablicę struktur i powstało coś takiego
Fragment kodu:
struct Batonik{
string nazwa;
double waga;
int kalorie;
};
Batonik * wsk = new Batonik[2];
for (int i = 0; i<2; i++){
cout<<"Podaj nazwe batonika: ";
getline(cin, wsk[i].nazwa);
cout<<"Podaj wage batonika: ";
(cin>>wsk[i].waga).get();
cout<<"Podaj liczbe kalorii: ";
(cin>>wsk[i].kalorie).get();
cout<<endl;
}
Chciałbym jakoś poukładać sobie wiedzę na ten temat ale do tego muszę rozwiać swoje wątpliwości.
- Czy przedstawiony wyżej fragment kodu można w ogóle nazwać DYNAMICZNĄ tablicą strutkur? Jeśli nie to, gdzie popełniłem błąd?
- W książce, którą aktualnie przerabiam związaną z C++ napisane jest, że sięganie do pól(wskaźników) odbywa się za pomocą operatora -> i błędem jest użycie operatora kropki (jak przy normalnych strukturach). W moim kodzie w przypadku użycia operatora -> program nawet się nie kompiluje - działą tylko i wyłącznie z operatorem kropki - czemu?
- (chyba najgłupsze pytanie) Czy jeśli najpierw w miejscu wsk[0].waga zapisze wartosc powiedzmy 100, to po zwolnieniu pamieci (delete [] wsk;) odwolani wsk[0].waga nadal powinno wyswietlac wartość 100 zamiast wyrzucania błedu?
cout<<wsk[0].waga;
delete [] wsk;
cout<<endl;
cout<<wsk[0].waga;
Z góry dziękuje za odpowiedz na moje pytania. Pozdrawiam :-)