1. Zadeklarowano zmienne: double *p, i = 235; double t[12];
a) podaj adres zmiennej i: &i
b) podaj adres zmiennej p: &p
c) przypisz zmiennej p adres zmiennej i: p = &i
d) przypisz zmiennej p adres tablicy t[]: p = t
e) przypisz zmiennej p adres 2 elementu tablicy t: p = &t[1]
2. Zdefiniowano funkcję:
float *fun (float, int*) {...}
a) zdefiniuj wskaźnik do tej funkcji: float *(*chuj)(float, int*)
b) wywołaj funkcję wykorzystując wskaźnik, dokonaj deklaracji niezbędnych do jej wywołania:
float *(*chuj)(float, int*);
chuj = fun;
int param = 666;
chuj(666.666, ¶m);
3. Zadeklaruj zmienną typu osoba i nadaj wartości polom: rok, imię_nazwisko, pensja:
struct data{int dzień, miesiąc, rok;};
struct dane{char imię_nazwisko[40]; struct data ur;};
struct osoba{struct dane pracownik; long pensja;};
struct osoba chuj;
strcopy(chuj.pracownik.imię_nazwisko, "Chuj ci w dupe");
chuj.pracownik.ur.dzień = 01;
chuj.pracownik.ur.miesiąc = 01;
chuj.pracownik.ur.rok = 1999;
chuj.pensja = 666666;
4. Podaj 3 sposoby przekazywania argumentów do funkcji:
przez wartość, wskaźnik i referencję.
5. Jeżeli argumentem funkcji jest tablica to w jaki sposób jest ona przekazywana do funkcji.
przekazywany jest adres pierwszego elementu.
6. Jakie funkcje nazywamy przeciążonymi.
o takiej samej nazwie i różnej ilości argumentów oraz ich różnicy ich typów.
7. Podczas deklaracji inicjalizowano tablicę. Zakreśl poprawne deklaracje:
1. int tab[][] = {0, 1, 10, 11, 20, 21, 30, 31};
spox 2. int tab[][2] = {1, 9};
spox 3. int tab[2][3] = {2, 1};
4. int tab[3][] = {0, 1, 10, 11, 20, 21};
spox 5. int tab[][2] = {0, 1, 10, 11, 20, 21};
8. Jakie wartości może przyjąć zmienna a, w zależności od wartości zmiennej b po wykonaniu instrukcji a=!(b);
a = 0 lub a = 1.
9. Podać deklarację zmiennej dla x, dla której poprawna jest instrukcja:
a = *x + 5;
int *x;
10. Ustal wartość zmiennej x i y dla których pętla się wukonuje?
while (!(x) || (y-5)) {...}
x = 0 lub y != 5.
11. Zdefiniowano typ:
struct data {
int miesiąc, dzień, rok;
};
Zadeklaruj wskaźnik do struktury data i napisz fragment programu który przypisze składowej miesiąc wartość 12.
data *chuj;
chuj = new data;
chuj->miesiąc = 12;
12. Opisz deklarację:
const char *const c;
stały wskaźnik do stałej zmiennej typu char. deklaracja nie jest poprawna. zminne typu const musza zostać zainicjowane przy deklaracji. prawidłowy fragment kodu powinien wyglądać tak:
const char chuj= "c";
const char *const c = &chuj;
Które z poniższych instrukcji dla tej deklaracji nie są poprawne:
a) c++; b) int d = *c++; d) c = c + 1; d) *c = 10;
wszystkie. nie można zmieniać wzkaźnika typu const, co jest robione w a, b i c oraz zmieniać wartości wskazywanej zmiennej typu const jak w przykładzie d (przynajmniej w tym przypadku).
13. Wyjaśnij zapis: *wsk++ przy deklaracji char * wsk;
wskazanie na następny bajt w pamięci (następną literę w stringu).
14. Zdefiniuj funkcję która będzie przechowywać ilość swoich wywołań
void chuj() {
static int dupa = 1;
dupa++;
};
15. Opisz deklaracje:
char (*chuj)[12] wskaznik do tablicy 12 elementów typu char
char *chuj[12] tablica 12 wskaznikow do elementów typu char
char (*chuj[5])() tablica 5 wskazników do funkcji zwracającej char
char *chuj() funkcja zwracająca wskaźnik do char
char (*chuj)() wskaźnik do funkcji zwracającej char
char (*chuj)[5] wskaźnik do tablicy 5 elementów typu char
16. Jaki jest błąd w definicji funkcji f().
int *f(float a, float b) {
int iloraz;
iloraz = a / b;
return &iloraz;
};
nie można zwracać adresu zmiennej lokalnej, niszczonej po wyjściu z funkcji.
17. Czy poniższy fragment programu spowoduje wydruk teksty "warunek spełniony". Uzasadnij odpowiedź.
int z = -1, d = 0;
if (z < 0 || z++ || ++d) printf("\nwarunek spełniony");
prawdziwe są warunki z < 0 (-1 < 0) i ++d (1), co wystarczy do wykonania instrukcji printf.
Jakie są wartości zmiennych: z = 0 d = 1.
18. Napisz fragment programu, który wykorzysta funkcję o prototypie:
void strcpy(char *dest, const char *src); - funkcja kopiuje z src do dest kolejne znaki wraz ze znakiem '\0'.
char dest[20];
char src[] = "Chuj ci w dupę";
strcpy (dest, src);