Witam.
Na wstępie pragnę zaznaczyć, że uczę się programować w C++.
Wcześniej miałem kontakt tylko z Delphi.
Temat wskaźników w Delphi potraktowałem nieco po macoszemu i szczerze mówiąc niewiele z niego zrozumiałem.
Teraz pragnę naprawić swój błąd i zrozumieć jak działa pamięć komputera.
Z pomocą pewnej książki do C++ napisałem taki programik:
#include <iostream>
#include <conio>
#pragma hdrstop
using namespace std;
int main()
{
unsigned short Krotka = 17;
unsigned long Dluga = 65535;
long ZeZnakiem = -58;
cout << "Krotka:\t\t" << Krotka;
cout << "\nRozmiar:\t" << sizeof(Krotka);
cout << "\nAdres:\t\t" << (long) &Krotka;
cout << "\n\nDluga:\t\t" << Dluga;
cout << "\nRozmiar:\t" << sizeof(Dluga);
cout << "\nAdres:\t\t" << (long) &Dluga;
cout << "\n\nZe znakiem:\t" << ZeZnakiem;
cout << "\nRozmiar:\t" << sizeof(ZeZnakiem);
cout << "\nAdres:\t\t" << (long) &ZeZnakiem;
getch();
return 0;
}
Po skompilowaniu otrzymałem takie coś:
I tu pojawia się parę pytań:
*Skąd się wzięła różnica aż 6 bajtów między krótką a długą zmienną? (Dodam, że w książce różnią się tylko o 4 bajty)
*Czy zmienne są odkładane na stos od tyłu? Jeśli nie, to skąd taka kolejność adresów?
Z góry dziękuję za pomoc i pozdrawiam
J4T