Skip to content

Instantly share code, notes, and snippets.

@pjastr
Created March 24, 2019 21:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pjastr/6fe9665a643a11623f126291cae3ff35 to your computer and use it in GitHub Desktop.
Save pjastr/6fe9665a643a11623f126291cae3ff35 to your computer and use it in GitHub Desktop.

Arytmetyka wskaźników, tablice jednowymiarowe - cd.

  1. 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.

  1. 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;
  1. 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;
  1. 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]);
  1. Zadania ze zbioru do wykonania w trakcie bieżących ćwiczeń:
4.2.7 4.2.12 4.2.13 4.2.16 4.2.17

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 oraz załóż issue. 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).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment