Advertisement
DominikPasiut

Untitled

Dec 17th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.04 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {
  5.     //Deklaruję zmienne
  6.     int liczba1 = 1;
  7.     int liczba2;
  8.     int liczba3;
  9.     int liczba4;
  10.     int liczba5;
  11.     //Deklaruję wskażniki
  12.     int * wskaznik1;
  13.     int * wskaznik2;
  14.     int * wskaznik3;
  15.     int * wskaznik4;
  16.     int * wskaznik5;
  17.     //Ustawiam wskażniki na adresy zmiennych
  18.     wskaznik1 = &liczba1;
  19.     wskaznik2 = &liczba2;
  20.     wskaznik3 = &liczba3;
  21.     wskaznik4 = &liczba4;
  22.     wskaznik5 = &liczba5;
  23.  
  24.     // Przypisuję wartości do zmiennych od liczba2 do liczba5 (tutaj adresy wyświetlam z ciekawości)
  25.     // i tu trochę nie rozumiem, bo adres wartości "liczba1" to jakaś tam liczba i w moim rozumowaniu, adresy kolejnych zmiennych powinny się zwiększać,
  26.     // a tu wychodzi na to, że adresy się zmniejszają np. u mnie "liczba1" znjaduje się pod adresem 6356632, natomiast "liczba2" znajduje się,
  27.     // pod adresem 6356628, czyli mniejszy o cztery bajty. W dalszej częśći progarmu dodaję do kolejnych adresów 1(4 bajty, (int)) i adresy rosną.
  28.     // Dlaczego tu maleją? Tak jakby program zapisywał się w kodzie maszynowym od prawej do lewej, albo z dołu do góry?
  29.  
  30.                                  printf("%d\n", wskaznik1);
  31.     *wskaznik2 = *wskaznik1 + 1; printf("%d\n", wskaznik2);
  32.     *wskaznik3 = *wskaznik2 + 1; printf("%d\n", wskaznik3);
  33.     *wskaznik4 = *wskaznik3 + 1; printf("%d\n", wskaznik4);
  34.     *wskaznik5 = *wskaznik4 + 1; printf("%d\n", wskaznik5);
  35.  
  36.     // Wyświetlam wartości i ich adresy
  37.     printf("\nWatrosc\t adres\n");
  38.     printf("%d \t %d \n", *wskaznik1, wskaznik1);
  39.     printf("%d \t %d \n", *wskaznik2, wskaznik2);
  40.     printf("%d \t %d \n", *wskaznik3, wskaznik3);
  41.     printf("%d \t %d \n", *wskaznik4, wskaznik4);
  42.     printf("%d \t %d \n", *wskaznik5, wskaznik5);
  43.  
  44.     // Dodaję adresy (Tu rozumiem, każdy następny adres zwiększam o 1 czyli o 4 bajty(int)
  45.     printf("\nTu po kolei dodaje 1 do kazdego adresu i one sie zwiekszaja co widac ponizej\n");
  46.     printf("%d \n%d \n%d \n%d \n%d \n\n", wskaznik1, wskaznik1 + 1, wskaznik1 + 2, wskaznik1 + 3, wskaznik1 + 4);
  47.     // Tu za pomocą dodawania i odejmowania, oraz bazując na adresach które znam sprawdzam jak to się wykonuje
  48.     printf("\nTu sprawdzam, czy po wykonaniu odpowiednich dzialan, wyswietle takie same adresy\n");
  49.     printf("%d \n%d \n\n", wskaznik2, wskaznik4 + 2);
  50.     printf("%d \n%d \n\n", wskaznik3, wskaznik1 - 2);
  51.     printf("%d \n%d \n\n", wskaznik4, wskaznik3 - 1);
  52.     printf("%d \n%d \n\n", wskaznik5, wskaznik3 - 2);
  53.  
  54.  
  55.  
  56. /*
  57.     wskaznik = &liczba;
  58.     wskaznik1 = &liczba2;
  59.  
  60.     liczba2 = *wskaznik + 1;
  61.     liczba3 = *wskaznik1 + 1;
  62.  
  63.     printf("Wartosc = %d \n", *wskaznik);
  64.     printf("adres = %d \n", wskaznik);
  65.  
  66.     printf("Wartosc = %d \n", liczba2);
  67.     printf("adres = %d \n", &liczba2);
  68.  
  69.     printf("Wartosc = %d \n", liczba3);
  70.     printf("adres = %d \n", &liczba3);
  71.  
  72.     printf("adres = %d \n", *(&liczba3 - 1));
  73.     printf("adres = %d \n", &liczba3 - 1);
  74.     printf("adres = %d \n", *(&liczba3 + 1));
  75. */
  76.  
  77.     return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement