Práce se strukturami v C

Mě to tak úplně normální nepřišlo. Jméno struktury (nevím, kde jsem k tomu přišel) jsem pokládal za odkaz(= ptr) na její začátek (jako u pole). Očekával jsem tady chování pro takový objekt běžné.
Jeden zdejší kolega mě odkázal na písmo svaté a struktury se od ANSI C opravdu předávají hodnotou, pro odkaz je nutný pointer.

Teď jdu ještě zkoumat, jesli tam nenajdu něco o volatile parametru funkce.
Edit: O předávání volatile jsem se nedočet, ale snad stačí trochu přemejšlet.
Jelikož v C neexistuje volání odkazem, volá se vždy hodnotou. Pokud je parametrem funkce pointer, předá se jeho hodnota (adresa na kterou ukazuje). Pokud však jsou cílová data volatile, tak v tom stavu zůstávají, typový modifikátor chybí pouze u onoho pointeru. To má nejspíš následky, že pokud se během funkce změní původní předávaný pointer, tak míří jinam, než ten do funkce předaný. Důsledek bude, že pokud původní data zmizela (jsou neplatná), funkce bude pracovat s nesmysly. Zůstanou_li však cílová data na místě a jen se změní, funkce bude mít stále data aktuální.
Potřeboval-li bych mít volatile i předávaný pointer (např. u dynamicky alokovaných prvků), bylo by nutné vytvořit pointer na pointer jako parametr funkce a v ní se dle toho zařídit.
Nádhera :slight_smile:.
Z předchozího příkladu (struktura není dynamická) je tedy vhodný tento zápis (bez varování): casNaText((time_t *)(&cas), casText);