Uwaga! Zadania 1-4 nie są obowiązkowe do przesłania na Githuba.
- Przeanalizuj poniższy kod i znajdź wyjaśnienia dla kolejnych etapów realizacji programu:
int *wsk;
int a[] = {1, 2, 3, 5, 7};
wsk = a;
wsk += 2;
- Przeanalizuj poniższy kod i znajdź wyjaśnienia dla kolejnych etapów realizacji programu:
int a[] = {1, 4, 3, 5, 7};
int *ptr = a + 2;
int diff = ptr - a;
- Przeanalizuj poniższy kod i znajdź wyjaśnienia dla kolejnych etapów realizacji programu:
int tab[] = {6, -3, 5, 18, 5, 8, 12, 44};
int *wsk;
wsk=tab + -6;
printf("%d \n", *(wsk+=6));
printf("%p \n", (wsk + 6));
printf("%p \n", &(wsk-=-2)[-2]);
printf("%d \n", (wsk+=-1)[2]);
- Przeanalizuj poniższy kod i znajdź wyjaśnienia dla kolejnych etapów realizacji programu:
int m = 5, n = 10, o = 0;
int *p1;
int *p2;
int *p3;
p1 = &m;
p2 = &n;
printf("p1 = %d\n", p1);
printf("p2 = %d\n", p2);
o = *p1+*p2;
printf("*p1+*p2 = %d\n", o);
p3 = p1-p2;
printf("p1 - p2 = %d\n", p3);
p1++;
printf("p1++ = %d\n", p1);
p2--;
printf("p2-- = %d\n", p2);
//printf("p1+p2 = %d\n", p1+p2);
Po analizie odkomentuj ostatnią linijkę i zastanów się czemu nie spełnia ona zasad kompilacji.
- Zadania ze zbioru do wykonania w trakcie bieżących ćwiczeń:
Rząd A
4.2.1 | 4.2.2 | 4.2.6 |
4.2.7 | 4.2.9 | 4.2.11 |
Rząd B
4.2.1 | 4.2.3 | 4.2.6 |
4.2.8 | 4.2.9 | 4.2.12 |
Rząd C
4.2.2 | 4.2.3 | 4.2.7 |
4.2.8 | 4.2.10 | 4.2.12 |
Pozostałe zadania nie są obowiązkowe do przesłania, choć ich rozwiązanie może być przydatne do przygotowania do kolokwium. Jeśli zostaną umieszczone w repozytorium, to zostaną sprawdzone (bez dodatkowych punktów).
Jeśli masz problem z rozwiązaniem jakiegoś polecenia, prześlij kod "początkowy" w komentarzu wpisując pytania lub informację o ew. problemach. Kod powinien spełniać zasady kompilacji. Jeśli chciałbyś poprosić o sprawdzenie polecenia przed następnymi ćwiczeniami, w repozytorium załóż issue i przypisz go do prowadzącego zajęcia.
Zadania ze znaczkiem C++ są możliwe do wykonania tylko w tym języku z wykorzystaniem konstrukcji dostępnych w C++ a niedostępnych w C. Można jednak spróbować obejść nieco problem w C (nie jest to obowiązkowe).