Adresy zmiennych (Podstawy C) - POMOCY!

0

Witam, mieliśmy na zajęciach ćwiczenie dotyczące adresów zmiennych w C i niestety nic z niego nie rozumiem. Czy ktoś mógłby mi wytłumaczyć o co tutaj chodzi? Mam polecenia do zadania:

  1. Na podstawie różnicy adresów oblicz rozmiar pamięci zarezerwowany dla zmiennej.
  2. Analogicznie sprawdź rozmiary zmiennych innych typów.

Oto kod programu:

#include<stdio.h>
int main()
{
short krotka1=12345, krotka2=54321;
printf("Zmienna \"krotka1\" - wartosc: %hi , adres: %p", krotka1, &krotka1);
printf("\n");
printf("Zmienna \"krotka2\" - wartosc: %hi , adres: %p", krotka2, &krotka2);
printf("\n");
return 0;
}

Program wyświetla coś takiego:

Zmienna "krotka1" - wartosc: 12345 , adres: 0xbf97eee2
Zmienna "krotka2" - wartosc: -11215 , adres: 0xbf97eee0

I jak na podstawie różnicy tych adresów mam podać rozmiar pamięci zarezerwowany dla zmiennej? Oraz co oznaczają kolejne polecenia "%hi" oraz "%p"?

Z góry dzięki za pomoc!

0
  1. Skoro obiekty są utworzone zaraz po sobie to różnica adresów (adres wskazuje ci gdzie się dana zmienna w pamięci "zaczyna") da ci odpowiedź na pytanie "ile pamięci zarezerwowano dla danej zmiennej". Wyobraź sobie że masz dwa identyczne klocki. Kładziesz je zaraz obok siebie. Wiedząc że pierwszy klocek "zaczyna" się w punkcie X, a drugi klocek zaczyna się w punkcie X+Y możemy łatwo policzyć ze pierwszy klocek ma długość Y.
  2. %hi i %p ? http://www.cplusplus.com/reference/clibrary/cstdio/printf/ wszystkie parametry są ladnie opisane. Nie umiesz czytać?
0

Dodam, że arytmetyka dla wskaźników jest poprawna tylko wewnątrz tej samej tablicy + 1 adres za nią.

1 użytkowników online, w tym zalogowanych: 0, gości: 1