problem: Mam dynamicku struktoru dajme tomu
struct ziaci { char * meno; char priezvisko; };
main()
{
ziaci * trieda;
add_trieda(trieda);
}
void add_trieda(ziaci * pt)
{
pt = new ziaci [5];
// teraz alokujem pamat pre meno a potom priezvisko a skopirujem udaje
}
lenze problem je v tom ze to pracuje iba vo funkcii add_tieda vo funkcii main je struktura priazdna!
Tomuto fakt nerozumiem ved predavam ukazovatel na tu strukturu.
alebo to nema byt nahodou takto?
trieda = add_trieda(trieda);
a vo funkcii { return pt; } ??
Fórum › C / C++
Dyn Struct
To myth:
Nejlepsi podle meho je volba, kterou jsi sam uvedl, tedy vratit adresu na tu stukturu. Dalsi moznosti je predavat adresa _pointeru_ jako parametr, tedy:
void add_trieda(ziaci ** pt)
{
pt = new ziaci [5];
// teraz alokujem pamat pre meno a potom priezvisko a skopirujem udaje
}
//a volat
add_trida(&trieda);
Nebo kdyz jsme v C++:
void add_trieda(ziaci *& pt) // nebo naopak ziaci &* pt
{
pt = new ziaci [5];
// teraz alokujem pamat pre meno a potom priezvisko a skopirujem udaje
}
// a volat noramlne
add_trieda(trieda);
Jak se tak divam, tak tom prvnim priklade mam chybku. Namisto
void add_trieda(ziaci ** pt)
{
pt = new ziaci [5];
// teraz alokujem pamat pre meno a potom priezvisko a skopirujem udaje
}
ma byt samozrejme:
void add_trieda(ziaci ** pt)
{
*pt = new ziaci [5];
// teraz alokujem pamat pre meno a potom priezvisko a skopirujem udaje
}
Zjistit počet nových příspěvků
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 6 hostů
Podobná vlákna
C++ kopírování dyn. pole objektů — založil james2000
Uložení dat do dyn. alokovaného pole — založil aralxd
Struct vo funkcii — založil Eversmann
Potíže se struct — založil IDKFA
Moderátoři diskuze