Strukturu lze funkci předat: hodnotou i pomocí ukazatele pouze pomocí ukazatele (reference na strukturu) pouze hodnotou (kopie struktury) (pole[i])+j adresa prvku na souřadnicích i, j adresa i-tého řádku hodnota prvku na souřadnicích i, j switch(výraz) case hodnota1 : příkaz1; break;... default : příkazdef; break; proměnná výraz nemůže být znak výčtový typ celé číslo řetězec velikost ukazatele konstantní, 4 b konstantní, 1 B podle datového typu konstantní, 4 B
příkaz break ukončuje jakoukoliv funkci vnější cyklus nejvnitřnější cyklus program Dynamická alokace paměti s výchozí nulovou hodnotou obstará funkce realloc malloc calloc nullalloc Tato část kódu: int funkce() printf("%d",a); int a=97; funkce(); vypíše nedefinovanou hodnotu vypíše hodnotu 0 skončí chybou při překladu vypíše hodnotu 97 operátor sizeof() vrací hodnotu v v kb v kb
v b v B f1(&pole[4]); funkci f1 předáváme adresu 5. prvku hodnotu 5. prvku hodnotu 4. prvku adresu 4. prvku Deklarace funkce nemusí obsahovat návratový typ typ a počte parametrů tělo funkce název funkce Tato část kódu: #include <stdio.h> int a; void funkce() printf("%d",a); int a=97; funkce(); vypíše nedefinovanou hodnotu skončí chybou při překladu vypíše hodnotu 0
vypíše hodnotu 97 asociativita je pořadí vyhodnocení operátorů směr vyhodnocení operátorů operátor s dvěma operandy int a=3,b; b=++a; b=4 b=3 b=5 do L-hodnoty se dá uložit výsledek se nedá uložit výsledek se nedá uložit adresa Tento kód: int a=97; int a=99; printf("%d ",a); printf("%d ",a); vypíše: 99 97
skončí chybou při překladu vypíše: 99 99 vypíše: 97 97 *(pole[i])+j adresa i-tého řádku hodnota prvku na souřadnicích i, j adresa prvku na souřadnicích i, j Při definici statického dvourozměrného pole musí být definován pouze počet sloupců nemusí být definován počet řádků ani sloupců musí být definován počet řádků i sloupců musí být definován pouze počet řádků AUTO *ukauto ukauto = (AUTO*)malloc(sizeof(AUTO)); přístup k jeho datové položce pocetosob umožňuje (*ukauto).pocetosob *(ukauto).pocetosob *ukauto.pocetosob Tento kód: int a=99; a=97; printf("%d ",a); printf("%d ",a);
vypíše: 99 97 vypíše: 97 99 vypíše: 99 99 vypíše: 97 97 #include <filename> hledá soubor v systémovém adresáři v žádném - je to chyba hlavním - C:\ definovaném adresáři Struktura v jiné struktuře v jazyce C nemůže existovat může existovat za předpokladu že je vnořená struktura předem definována může existovat za předpokladu že je vnořená struktura později definována int a=3,b; b=a++; b=5 b=3 b=4 int x=1234567 hodnota x bude zabírat více B v textovém souboru více B v binárním souboru
v binárním i textovém stejně velikost ukazatele podle datového typu konstantní, 4 b konstantní, 1 B konstantní, 4 B switch(výraz) case hodnota1 : příkaz1; break;... default : příkazdef; break; větev default se provede vždy se provede za předpokladu že vyhovuje alespoň jedna větev se provede za předpokladu že vyhovují všechny větve se provede za předpokladu že nevyhovuje žádná větev int a=3,b=2; a/b výsledek bude reálné číslo exponent celé číslo Co je v kódu špatně? int a=97;
char b=88; printf("hello "); int b=4; printf("%c",a); int b=4; char b=88; printf( %c,a); celé pole z binárního souboru můžeme načíst funkcí fread freadln fscanf readln