Pomoc s pointry

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
mlike
Příspěvky: 28
Registrován: 03 zář 2005, 00:00

Pomoc s pointry

#1 Příspěvek od mlike »

Ahoj. Chtěl bych požádat, jestli by se našel někdo, kdo by mi tak trošku polopaticky vysvětlil použití pointrů v menu. Jedná se mi o to, že mám 4 tlačítka a každé má udělat jiný úkol. A pomocí pointrů se ten úkol "třídí". Jen nevim přesně jak. Já vim, že to tu nedávno bylo, ale bylo to v Cčku a to mi bohužel nic neříká, takže jsem to z toho jaksi nepobral. Buď jestli by to šlo vysvětlit jednodušeji, nebo nejlépe přímo v (pic)basicu. Děkuju moc za pomoc. Mlike

Tak jsem se prokousal až k tomu jak dostat pointr na funkci, ale nevim jak tu funkci potom spustit. V tom cčku je to takto:
void ccp(unsigned int event)
{
if(event > EV_LIMIT) fatal(); // fatalni chyba
ccp_entry[ccp_status][event](); // skoc na entry
}

a právě tento příkaz si neumim převést do basicu
Uživatelský avatar
piitr
Příspěvky: 1003
Registrován: 19 říj 2007, 00:00
Kontaktovat uživatele:

#2 Příspěvek od piitr »

Když to hodně zjednoduším, tak je to asi takto. Mám výraz.

Kód: Vybrat vše

ccp_entry
Hodnota tohodle výrazu je nějaké pole.

Kód: Vybrat vše

ccp_entry[ccp_status]
Aplikovali jsme na to pole operaci hranatá závorka, čímž jsme z něj vzali jeden prvek. Ten prvek je ale sám o sobě další pole. (Bylo to pole v poli).

Kód: Vybrat vše

ccp_entry[ccp_status][event]
Aplikovali jsme další hranatou závorku, takže jsme z toho vnitřního pole vzali jednu hodnotu. Ta hodnota je zase nějakého typu. V tomto případě zřejmě typu ukazatel na funkci.

Kód: Vybrat vše

ccp_entry[ccp_status][event]()
Na ten ukazatel na funkci jsme aplikovali operaci kulatá závorka, čímž jsme funkci zavolali. Hodnota výrazu je návratová hodnota.

Kód: Vybrat vše

ccp_entry[ccp_status][event]();
Přidali jsme středník. Tím jsme z toho výrazu udělali příkaz. Návratovou hodnotu funkce zahazujeme.

Jak to přepsat do basicu, ti asi nepovím. V těchhle věcech je každý basic jiný a já zrovna picbasic neznám. Klidně je možné, že to v něm ani nepůjde - že nebude ukazatele na funkce vůbec znát. Pak by se to muselo psát celé trochu jinak.
Uživatelský avatar
mlike
Příspěvky: 28
Registrován: 03 zář 2005, 00:00

#3 Příspěvek od mlike »

jj děkuju, pravděpodobně jsem i našel už příkaz jak na to. Děkuju za pomoc :)
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“