Vyskúšajte sa! Vyberte pre každú z otázok jedinú správnu z ponúknutých odpovedí. Po vyplnení testu stlačte Hotovo a dozviete sa, ako ste uspeli.
1. Nech p je pointer na int a i je premenná typu int. Ktoré z uvedených priradení NIE je správne?
p
i
p = 0;
p = i;
p = p + 1;
p = &i;
2. Čo je výstupom daného programu?
int main(void) { int i, j, *p, *q; p = &i; q = &j; *p = 5; *q = *p + i; printf("i = %d, j = %d\n", i, j); return(0); }
3. Konštanta NULL má (hexadecimálne) hodnotu:
NULL
4. Deklarácie int *x a int* x majú rovnaký význam.
int *x
int* x
5. Dve pamäťové miesta môžu mať rovnakú adresu.
6. Pointery môžu uchovávať adresy premenných ktorého typu?
int
char
struct
7. Operátor & sa nazýva:
&
8. Operátor * NIE je možné použiť ako operátor
*
9. Čo bude obsahovať premenná i po vykonaní nasledujúceho kódu?
int i = 17; int *p = &i; *p = 98;
10. Akým príkazom zmeníme hodnotu premennej i na 2003?
int *p; int i; int k; i = 63; k = i; p = &i;
k = 2003;
*k = 2003;
p = 2003;
*p = 2003;
11. Aké hodnoty nadobudnú premenné i a j po vykonaní uvedenej sekvencie príkazov?
j
int i = 23; int j = 72; int *p1; int *p2; p1 = &i; p2 = &j; *p1 = *p2;
12. Akú hodnotu bude mať premenná i po vykonaní uvedených príkazov?
int i = 2; int k = 4; int *p1; int *p2; p1 = &i; p2 = &k; p1 = p2; *p1 = 6; *p2 = 8;
13. Akú hodnotu bude mať premenná i po vykonaní uvedených príkazov?
int i = 2; int k = 4; int *p1; int *p2; p1 = &i; p2 = &k; *p1 = *p2; *p1 = 6; *p2 = 8;
14. Číslo 0xabcd je v binárnej číselnej sústave číslo
0xabcd
15. Majme premennú s typu záznam (struct), ktorého jedna zo zložiek je a. Hodnotu tejto zložky môžeme sprístupniť zápisom s->a
s
a
s->a
16. Deklaráciou typedef int *p_int sme vytvorili premennú s názvom p_int, ktorej hodnotami môžu byť adresy premenných typu int.
typedef int *p_int
p_int
17. Pole môže vystupovať aj ako parameter funkcie. Do funkcie sa ako skutočný parameter odovzdáva jeho adresa.
18. Čo je výstupom daného programu?
void plus_10(int a, int *p) { *p = a + 10; } int main(void) { int x = 2, y = 6; plus_10 (x, &x) ; printf("x = %d, y = %d\n", x, y) ; plus_10 (x, &y) ; printf("x = %d, y = %d\n", x, y) ; return (0); }
19. Funkcie nie sú základným údajovým typom, preto nemôžeme použiť pointer na funkciu.
20. Nasledujúca funkcia:
void zahada(int *a, int *b) { if (*a != *b) { int pom = *a; *a = *b; *b = pom; } }
21. V jazyku C môžeme reťazec (string) chápať ako pointer na char.
22. Sú dané nasledujúce deklarácie poľa a ďalších premenných:
float a[] = {1.0, 2.1, 3.2, 4.3, 5.4, 6.5, 7.6, 8.7}; float *ptr1, *ptr2;
ptr1 = a;
ptr2 = ptr1 = &a[2];
a = 3.14;
23. Ak ret je pointer na char, ktorý ukazuje na reťazec "Ahoj svet!", tak ret[3] má hodnotu 'o'.
ret
ret[3]
24. Čo je výstupom daného programu?
void funkcia(int a[]) { printf("a[0] = %d, a[1] = %d, a[2] = %d\n", a[0], a[1], a[2]); a[1] = 0; } int main(void) { int a[3] = {1, 2, 3}; funkcia(a); printf("a[0] = %d, a[1] = %d, a[2] = %d\n", a[0], a[1], a[2]); return(0); }
25. Premenná pom v uvedenej časti programu, je uložená v pamäti na adrese 0x1234 a platí sizeof(int) == 4. Akú hodnotu bude mať premenná p po vykonaní daných príkazov?
pom
0x1234
sizeof(int) == 4
int pom; int *p; p = &pom; p += 2;
26. Predpokladajme, že a je statické pole prvkov typu int a ptr je pointer, ktorý ukazuje na začiatok tohto poľa. Ktorá z možností predstavuje dvojicu ekvivalentných zápisov?
ptr
a[3]
ptr + 3
a[2]
*ptr + 2
ptr[0]
a[5]
(ptr + 4)[1]
27. Vyjadrite slovami, akú údajovú štruktúru deklarujeme zápisom
float *data[250];
28. Majme deklarované pole a funkciu:
void fun(int z[]); int x[10];
x
fun(x)
fun(x[])
fun(x[10])
fun(&x)
29. Majme deklarované pole a funkciu rovnako ako v predchádzajúcej otázke. Nech sa vo funkcii fun zmení hodnota prvku z[1]. Zmení sa tým aj hodnota x[1]? (A) áno (B) nie
fun
z[1]
x[1]
30. Akú hodnotu bude mať premenná i po vykonaní uvedených príkazov?
int a[10]; int i; i = &a[9] - a;
31. V C má funkcia main takúto hlavičku:
main
int main(int argc, char **argv);
argv
32. Pointer, ktorý ukazuje na úsek pamäti, ktorá programu nepatrí (vôbec nebola pridelená alebo už došlo k jej uvoľneniu) by sme mohli nazvať aj "zablúdeným " pointerom. Ktorý z uvedených poiterov "zablúdil"?
int *y = malloc(sizeof(int)); int *z = y; free((void*)z);
y
z
33. Je v uvedenom kóde chyba? Ak áno, aká?
void *p; p = (float*) malloc(sizeof(float)); *p = 3.14;
float
sizeof
34. Pomocou funkcie malloc môžeme alokovať pamäť pre pole.
malloc
35. Výraz sizeof(int) znamená:
sizeof(int)