====== 11a. Příklady v C ====== #include #include void tisk_pole (int * a, int velikost); int main () { int a[2]; // neinicializovane pole int b[9] = {0}; int c[] = {1, 2, 3, 4, 5}; int d[] = {[100] = 10}; int e[10] = {[4] = 10, [9] = 33}; for (int i = 0; i < sizeof(e)/sizeof(int); i++) printf("%i ", e[i]); printf("\n"); // ukazatel int x = 10, x1 = 20; printf("%p %p\n", &x, &x1); int * y = &x; // ukazatel y obsahuje adresu promenne x *(y+1) = 12; // do pameti, jejiz adresu mam v y, zapisu 12 printf("x = %i\n", x); printf("x1 = %i\n", x1); for (int i = 0; i < sizeof(e)/sizeof(int); i++) printf("%i ", *(e+1)); printf("\n"); int x2 = 20; int f[x2]; int * g = malloc(4*sizeof(int)); int * h = calloc(4, sizeof(int)); // nuluje odkazovanou pamet h = realloc (h, 5*sizeof(int)); tisk_pole (c, 5); printf("%lu %lu\n", sizeof(g), sizeof(h)); free(g); free(h); return 0; } void tisk_pole (int * a, int velikost) { for (int i = 0; i < velikost; i++) printf("%i ", a[i]); printf("\n"); } #include struct osoba { int vyska; // vyska v cm float vaha; // vaha v kg }; typedef struct { float re, im; } komplex; void komplex_tisk (komplex a) { printf("%.2f%+.2fi\n", a.re, a.im); } komplex komplex_soucet (komplex a, komplex b) { komplex tmp; tmp.re = a.re + b.re; tmp.im = a.im + b.im; return tmp; } void tisk_osoby (struct osoba x) { printf ("josef: %icm, %.2fkg\n", x.vyska, x.vaha); } int main() { struct osoba josef; josef.vyska = 180; josef.vaha = 78.5; tisk_osoby (josef); komplex x; x.re = 3.14; x.im = 3.5; komplex x1; x1.re = -6.0; x1.im = 8.3; komplex_tisk (komplex_soucet (x, x1)); typedef int i; i a = 10; printf("a = %i\n", a); return 0; }