Tyto stránky již nejsou udržovány. Obsah je postupně přesouván/aktualizován na adrese chytrosti.marrek.cz.
1/1
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á".
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 }