Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- int main(void)
- {
- //Deklaruję zmienne
- int liczba1 = 1;
- int liczba2;
- int liczba3;
- int liczba4;
- int liczba5;
- //Deklaruję wskażniki
- int * wskaznik1;
- int * wskaznik2;
- int * wskaznik3;
- int * wskaznik4;
- int * wskaznik5;
- //Ustawiam wskażniki na adresy zmiennych
- wskaznik1 = &liczba1;
- wskaznik2 = &liczba2;
- wskaznik3 = &liczba3;
- wskaznik4 = &liczba4;
- wskaznik5 = &liczba5;
- // Przypisuję wartości do zmiennych od liczba2 do liczba5 (tutaj adresy wyświetlam z ciekawości)
- // 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ć,
- // a tu wychodzi na to, że adresy się zmniejszają np. u mnie "liczba1" znjaduje się pod adresem 6356632, natomiast "liczba2" znajduje się,
- // 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ą.
- // Dlaczego tu maleją? Tak jakby program zapisywał się w kodzie maszynowym od prawej do lewej, albo z dołu do góry?
- printf("%d\n", wskaznik1);
- *wskaznik2 = *wskaznik1 + 1; printf("%d\n", wskaznik2);
- *wskaznik3 = *wskaznik2 + 1; printf("%d\n", wskaznik3);
- *wskaznik4 = *wskaznik3 + 1; printf("%d\n", wskaznik4);
- *wskaznik5 = *wskaznik4 + 1; printf("%d\n", wskaznik5);
- // Wyświetlam wartości i ich adresy
- printf("\nWatrosc\t adres\n");
- printf("%d \t %d \n", *wskaznik1, wskaznik1);
- printf("%d \t %d \n", *wskaznik2, wskaznik2);
- printf("%d \t %d \n", *wskaznik3, wskaznik3);
- printf("%d \t %d \n", *wskaznik4, wskaznik4);
- printf("%d \t %d \n", *wskaznik5, wskaznik5);
- // Dodaję adresy (Tu rozumiem, każdy następny adres zwiększam o 1 czyli o 4 bajty(int)
- printf("\nTu po kolei dodaje 1 do kazdego adresu i one sie zwiekszaja co widac ponizej\n");
- printf("%d \n%d \n%d \n%d \n%d \n\n", wskaznik1, wskaznik1 + 1, wskaznik1 + 2, wskaznik1 + 3, wskaznik1 + 4);
- // Tu za pomocą dodawania i odejmowania, oraz bazując na adresach które znam sprawdzam jak to się wykonuje
- printf("\nTu sprawdzam, czy po wykonaniu odpowiednich dzialan, wyswietle takie same adresy\n");
- printf("%d \n%d \n\n", wskaznik2, wskaznik4 + 2);
- printf("%d \n%d \n\n", wskaznik3, wskaznik1 - 2);
- printf("%d \n%d \n\n", wskaznik4, wskaznik3 - 1);
- printf("%d \n%d \n\n", wskaznik5, wskaznik3 - 2);
- /*
- wskaznik = &liczba;
- wskaznik1 = &liczba2;
- liczba2 = *wskaznik + 1;
- liczba3 = *wskaznik1 + 1;
- printf("Wartosc = %d \n", *wskaznik);
- printf("adres = %d \n", wskaznik);
- printf("Wartosc = %d \n", liczba2);
- printf("adres = %d \n", &liczba2);
- printf("Wartosc = %d \n", liczba3);
- printf("adres = %d \n", &liczba3);
- printf("adres = %d \n", *(&liczba3 - 1));
- printf("adres = %d \n", &liczba3 - 1);
- printf("adres = %d \n", *(&liczba3 + 1));
- */
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement