/*
 * Soubor:  20101215-Wed-ukazatele.c
 * Datum:   15.12.2010 13:12
 * Autor:   Marek Nožka, nozka <@t> spseol <d.t> cz
 * Licence: GNU/GPL 
 * Úloha:  Demonstrace práce s ukazateli
 */

#include <stdio.h>
#include <stdbool.h>

/////////////////////////////////////////////////////

int vymen(int *x,int *y)
{
    int tmp = *x;
    *x = *y;
    *y =tmp;
}
/**
 * Hlavní program.
 */
int main(void) {
    /* a, b jsou statické proměnné */
    int a;
    int b;
    /* p je ukazatel (pointer) na integer */
    int *p;
    
    a = 10;
    p = &a; /* amresand vydá adresu proměnné a,
    v p je nyní uložena adresa a */
    printf("adresa a:%p\n",(void *) p);
    b = *p ;  /* nepracuji s p, ale s pamětí na kterou p ukazuje */
    printf("%d %d\n", a, b);  // a==10, b==10

    *p = 391; /* a==391, b==10 */
    printf("%d %d\n", a, b);

    vymen(&a,&b);
    printf("%d %d\n", a, b);

    scanf("%d %d",&a,&b);
    scanf("%d %d",&a,&b);
    printf("%d %d\n", a, b);

    return 0;
}

