Offset berechnen
-
Hallo,
ich habe folgendes Programm gefunden, das den Offset berechnet und ausgibt, aber ich versteh es nicht.
#include <iostream.h> void main() { int Array[5] = {1,2,3,4,5}; // Speicherbedarf eines einzelnen Elements cout << "Integer belegt " << sizeof(int) << " Byte!\n"; cout << "Integer belegt " << &Array[4] - &Array[0] << " Byte!\n"; return; }Ich würde annehmen, dass man &Array[1] - &Array[0] rechnen muss, da es sich dabei ja genau um den Abstand eines Integers handelt, oder ?
-
Hallo,
die Aussage:cout << "Integer belegt " << &Array[4] - &Array[0] << " Byte!\n";ist Käse. Du bekommst hier nicht die Anzahl der Bytes, sondern die Anzahl der Int-Elemente und die beträgt nun mal vier. Die Anzahl der Bytes wäre das Ergebnis * sizeof(Element), also Mal sizeof(int).
-
int main(){ int Array[5] = {1,2,3,4,5}; // Speicherbedarf eines einzelnen Elements cout << &Array[4]<<endl; //==0x22ff60 cout << &Array[3]<<endl; //==0x22ff5c int a=&Array[4] - &Array[3]; cout << a <<endl; //es kommt 1 raus int b=0x22ff60-0x22ff5c; cout << b << endl;; //hier kommt 4 raus //da würd ich erwarten, dass bei beiden 4 rauskommt, da es doch eigentlich //identische Rechnungen sind, also <<< &Array[4] == 0x22ff60 ??? return; }
-
Nein, wenn Du Zeiger subtrahierst, komtm die Differenz in Elementen raus, nicht in Bytes. Aber das sagte Hume bereits
