f1(&pole[4]); funkci f1 předáváme hodnotu 4. prvku adresu 4. prvku adresu 5. prvku hodnotu 5. prvku symbolická konstanta pro konec souboru je eof EOF FEOF feof Správné vytvoření a otevření textového souboru pro čtení a zápis představuje fopen( "./data.txt", "rb+")); fopen( "./data.txt", "r+")); fopen( "./data.txt", "w" )); fopen( "./data.txt", "w+" )); třída extern je implicitní pro globální proměnné proměnné typu ukazatel lokální proměnné Deklarace je
oznámení o existenci s rezervací paměti doplnění zbývajících vlastností oznámení o existenci bez rezervace paměti int a=3,b=2; a/b výsledek bude exponent reálné číslo celé číslo AUTO *ukauto ukauto = (AUTO*)malloc(sizeof(AUTO)); přístup k jeho datové položce pocetosob umožňuje *ukauto.pocetosob (*ukauto).pocetosob *(ukauto).pocetosob cyklus se i=2; while(--i){... } nikdy neprovede provede jednou provede 2x
provede 3x int a=3,b; b=a++; b=5 b=3 b=4 void main(){ f1(); } funkce f1 musí být před funkcí main definována nemusí být před funkcí main deklarována za předpokladu že vrací int nemusí být před funkcí main deklarována za předpokladu že vrací float musí být vždy před funkcí main deklarována operátor & je logický součet logický součin bitový součin bitový součet lokální proměnné vznikají na stacku na pevném disku
na heapu v registrech Při definici statického dvourozměrného pole musí být definován počet řádků i sloupců nemusí být definován počet řádků ani sloupců musí být definován pouze počet řádků musí být definován pouze počet sloupců Převod řetězce na celé číslo obstará funkce atoi itoa atod itof atof *(pole[i])+j adresa i-tého řádku hodnota prvku na souřadnicích i, j adresa prvku na souřadnicích i, j v které paměťové třídě je přístup k proměnné nejrychlejší extern static auto register
Dynamická alokace paměti s výchozí nulovou hodnotou obstará funkce malloc realloc calloc nullalloc Pokud máme: void *b; int a=3; přiřazení adresy proměnné a do ukazatele b provedeme příkazem: (*int)b=&a nelze provést provedeme: (int*)b=&a provedeme příkazem: (int)b=&a pokud je ve funkci definovaná proměnná v paměťové třídě static pak při jejím volání je hodnota proměnné náhodná zachována vždy 0 Deklarace funkce nemusí obsahovat
typ a počte parametrů tělo funkce návratový typ název funkce Co je v kódu špatně? int main(int argc, char* argv[]) { int a=97; char b=88; printf("hello "); int b=4; printf("%c",a); } return 0; printf("%c",a); char b=88; int b=4; char str[10]; str = "ahoj"; OK chyba - správně by bylo 'ahoj' chyba - správně by bylo 'ahoj\0' chyba - str není L-hodnota velikost ukazatele konstantní, 1 B
konstantní, 4 b podle datového typu konstantní, 4 B continue ukončuje nejvnitřnější cyklus pokračuje od deklarovaného návěští vynutí si opakování nejvnitřnější smyčky ukončuje vnější cyklus (pole[i])+j hodnota prvku na souřadnicích i, j adresa i-tého řádku adresa prvku na souřadnicích i, j operátor znamená logický součet bitový součin logický součin bitový součet dimenze pole je v jazyku C kontrolována při překladu kontroluje preprocesor kontrolována za běhu programu není kontrolována
int (funkce1)() je funkce vracející ukazatel na int funkce vracející int proměnná typu int ukazatel na funkci velikost ukazatele konstantní, 4 b podle datového typu konstantní, 1 B konstantní, 4 B do-while musí proběhnou alespoň jednou nemusí proběhnout ani jednou proběhne právě jednou