# Zkouška 15.2 2010

<{ForumPost(poster="Krakonoš", timestamp=2010-02-15 14:36:25)}>
Zkouška byla podobná těm na socketce, nicméně objevila se otázka, kterou jsem předtím nikde nepotkal:  
  
  
Co vrátí následující program? (bylo to zkrácené, já napsal celý program aby si to každý mohl tipnout a hodit do překladače... navíc tam byl trošku komplikovanější příklad, který jsem mezitím zapoměl, nicméně jde tam hodně o prioritu operátoru a zejména hvězdičky - cčkaři jistě vědí, ostatní možná ne tak si to zkusí:-))

    #include <iostream>
    
    int f(int *a, int *b) {
        int i = *a + *b;
        *a = i**a;
        return *a;
    }
    
    int main(int argc, char **argv) {
        int a = 3;
    
        std::cout << f(&a, &a) << std::endl;
    
        return 0;
    }
    

Jinak zkouška easy, opravoval na místě :-)
<{/ForumPost}>

<{ForumPost(poster="batman", timestamp=2010-02-15 18:29:29)}>
ten příklad byl trochu jinak:  

    int a;
    
    int f(int *p, int *q)
    {
      *p = a + *q;
      *q = a * *p;
      a = *p + *q; // tak nějak...
      return a;
    }
    
    int main()
    {
     a = 3;
     f (&a, &a);
    }

podstatný je, že 'a' je globální proměnná a předává se do f referencí, takže v tý funkci f vlastně probíhá něco jako:  
a = a + a;  
a = a * a;  
a = a + a;  
return a; // výsledek byl 72  
  
i když, teď mě napadlo, jestli nebyly různý varianty... :)
<{/ForumPost}>

