Tyto stránky již nejsou udržovány. Obsah je postupně přesouván/aktualizován na adrese chytrosti.marrek.cz.

1/1

Zdrojové soubory z výuky

Na této stránce jsou k dispozici zdrojové soubory, které jsem vytvářel při výkladu během výuky. Nejsou to ukázkové a bezchybné zdrojové soubory. Ba naopak, jsou to pracovní neučesané verze, které vznikaly interaktivně ve výuce, často s cílem ukázat, že "takto se to nemá".

20101112-Fri-ukazatele-S4.c
   1 /*
   2  * Soubor:  20101112-Fri-ukazatele-S4.c
   3  * Datum:   12.11.2010 10:05
   4  * Autor:   Marek Nožka, nozka z@vináč spseol tečka cz
   5  * Licence: GNU/GPL 
   6  * Úloha:   Demonstrace ukazatelů a předává parametrů funkcím.
   7  */
   8 
   9 #include <stdio.h>
  10 
  11 
  12 /* 
  13  * Funkce má prohazovat x a y, ale neděje se tak, protože při volání funkce
  14  * se pracuje s lokálními kopiemi předávaných proměnných => po ukončení
  15  * funkce jsou původní proměnné nezměněné.*/
  16 void prohod_nefunguje(int x, int y)
  17 {
  18     int bagr; // pomocná proměnná
  19     bagr = x;
  20     x = y;
  21     y = bagr;
  22     printf("###### %d %d\n",x,y);
  23 }
  24 
  25 
  26 void prohod(int *x, int *y)
  27 {
  28     int bagr; // pomocná proměnná
  29     bagr = *x;
  30     *x = *y;
  31     *y = bagr;
  32 }
  33 
  34 
  35 /////////////////////////////////////////////////////
  36 #define P printf
  37 /**
  38  * Hlavní program.
  39  */
  40 int main(void) {
  41     int a=2;
  42     int b=11;
  43     int *p_i;   // ukazatel na int
  44 /*      ^
  45  *       `-- ukazatel na int        */
  46 
  47     printf("%d %d\n",a,b);
  48     p_i = &a;  // & vydá adresu proměnné a 
  49     /* v p_i je nyní uložena adresa a*/
  50     *p_i = 38; /* *(hvězdička) zajistí, že ukládám ne do p_i ale 
  51                    na adresu, kterou p_i obsahuje */
  52     printf("%d %d\n",a,b);
  53     b = *p_i;
  54     printf("%d %d\n",a,b);
  55 
  56     a = 33; b = 88;
  57     prohod(&a,&b);
  58     printf("%d %d\n",a,b);
  59 
  60     printf("zadej celé číslo > ");
  61     scanf("%d",&b);
  62     printf("zadal jsi číslo: %d\n",b);
  63 
  64     return 0;
  65 }
`--> stáhnout

Licence Creative Commons Valid XHTML 1.0 Strict Valid CSS! Antispam.er.cz Blog: Tlapicka.net