O existenci ukazatelů na funkce většina programátorů v C a C++ ví, i když je třeba příliš nepoužívá. V následujícím příspěvku bych chtěl upozornit na některá syntaktická pozlátka, která lze při práci s ukazateli na funkce použít.
Zimní semestr roku 2010/2011 pomalu končí a já, jak jsem slíbil, tak činím. Z důvodu větší délky původního příspěvku jsem se jej rozhodl rozdělit do dvou částí. V této části bych chtěl shrnout mé zkušenosti z prvního semestru z pohledu studenta.
Tak přece jen ještě stihnu v prosinci napsat příspěvek ;). Chtěl bych, jako každý rok, napsat pár blábolů o proběhlých dvanácti měsících. Ač jsem si myslel, že po těch týdnech strávených psaním matematicky orientovaného textu budu mít náladu na změnu, tak i přesto to vezmu jen stručně.
Shodou okolností jsem se dostal k zajímavému námětu na otázku, a tak toho hned využívám. Tentokrát bude úkolem vysvětlit chování programu. Zdroj otázky i původce řešení zveřejním až s uveřejněním řešení.
Když se zeptáte programátora v jazyce C na for cyklus, tak vám odvětí, že se skládá z hlavičky, která je tvořena třemi výrazy oddělenými středníky, kde do první se dává deklarace proměnných, do druhé podmínka ukončení cyklu, a do poslední akce provedená po každé iteraci. Každá z těchto částí je nepovinná. A pak následuje tělo cyklu. Co je ale zajímavé, tak je to, že to není tak úplně pravda a volitelnost částí záleží na typu for cyklu, který se použije.
Pokud ve svém C či C++ programu porovnáváte znaménková a bezznaménková čísla, používáte překladač GCC a máte zaplá varování, tak jste se již určitě setkali s varováním warning: comparison between signed and unsigned integer expressions. Toto varování bývá velmi často přehlíženo, a to mnohdy z toho důvodu, že dotyčnému není jasné, kde by mohl vzniknout problém. Cílem tohoto krátkého příspěvku je na tento problém poukázat.
Tentokrát budeme doplňovat program, který nevypadá jako Céčkový ani C++ový, tak, že bude přeložitelný překladačem C či C++ a bude dělat to samé, co původní program.
Pravidelně se setkávám s mylným názorem, že "ukazatel je číslo". V tomto příspěvku bych chtěl (1) poukázat na to, že tvrdit, že "ukazatel je číslo", je to stejné, jako tvrdit, že "Bozetechova 2, 612 66 Brno, Czech Republic" je číslo a (2) že ukazatele a čísla nelze jen tak mezi sebou převádět.