Dá se v C vytvořit ukazatel na vnořenou strukturu? – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Dá se v C vytvořit ukazatel na vnořenou strukturu? – C / C++ – Fórum – Programujte.comDá se v C vytvořit ukazatel na vnořenou strukturu? – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
oxidián0
Grafoman
1. 3. 2015   #1
-
0
-

Zjednodušeně:

Dejme tomu že mám objekt "Město" a v něm mám objekt "Garáže". Uvnitř garáží mám "parkovací místa" a uvnitř "markovacích míst" mám jednomístnou parkovací plochu nebo dvoumístnou parkovací plochu. Když by takový objekt byl kompletně iniciovaný a nastavený, jak vytvořit odkaz na "parkovací místa"?

Zejména v případě, kdy chci vytvořit funkci, která bude pracovat s "parkovacími místy", abych nemusel do funkce předávat objekt "Město", číslo garáže a číslo parkovacího místa, chtěl bych do funkce předat pouze jedno konkrétní parkovací místo pomocí ukazatele. Jde to nebo ne?

Podle mě to konkrétní místo leží na nějaké adrese v paměti, takže by mělo stačit předat pouze tu adresu, ale zde jsem našel ohledně C++:

http://stackoverflow.com/questions/1929887/is-pointer-to-inner-struct-member-forbidden

že to nejde a mě zajímá jak je to v C.

A jak to teda řešit, musíém předat celý objekt a ty dva další indexy abych mohl dohledat parkovací místo?

Nahlásit jako SPAM
IP: 78.45.199.–
KIIV
~ Moderátor
+43
God of flame
1. 3. 2015   #2
-
0
-

V C je to jednoduchy, tam objekty nejsou. Kazdopadne vsechno jde, jen se to musi treba udelat klickou. V C++ muzes udelat referenci na to parkoviste a pak k nemu pristupovat. Nebo i vratit referenci na parkovaci misto. Akorat budes muset mit viditelne ty definice z venci. Primo na parkovaci misto bych to nedoporucoval u stl kontejneru. Kdyz neco pridas, tak se ti muze zbytek realokovat a presunout jinam.

Mozna by byl lepsi jednoduchy wrapper, kdy ho vytvoris s mestem, garazi a budes mu jen predhazovat operatorem[] ty mista.

A v C nemas tolik na vyber, jen pointery nebo tak. Pole si resis sam, nic jako stl to nema.

Nahlásit jako SPAM
IP: 94.113.95.–
Program vždy dělá to co naprogramujete, ne to co chcete...
oxidián0
Grafoman
1. 3. 2015   #3
-
0
-

Mám vyřešeno:

arglen = setBoolChannels(&w->layer_files[file_no].command_orders[tmpi], argTok);

uint32_t setBoolChannels(LAYER_COMMAND_ORDER_t * command, unsigned char * channels){
  uint32_t arglen;
  command->rid=888;
  arglen = strlen(channels);
return arglen;
}

Nahlásit jako SPAM
IP: 78.45.199.–
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žit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 15 hostů

Podobná vlákna

Strukturu new — založil pep

Pointer na strukturu — založil Romča

Ako na strukturu — založil Vestax

Pointer na strukturu — založil Fugii

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý