Hallo zusammen,
da muss ich jetzt dem PicNick absolut zustimmen.
Solange ich keine Operation mit dem Zeiger ausführe, ist es völlig unerheblich wie ich diesen Pointer caste. Es wird lediglich festgelegt, auf welche Adresse der Pointer zeigen soll. Ob das ein Char, Int, Array oder was auch immer ist, spielt für den Compiler erstmal keine Rolle. Das "casten" macht so gesehen erstmal überhaupt keinen Sinn und könnte auch Weggelassen werden. Wenn ich aber möchte, daß der "universelle Pointer "VOID" welcher ja zunächst Typenlos ist um ein oder 2 oder 4 Bytes nach der Operation erhöht wird. muss ich ihm natürlich mitteilen
um welchen Datentyp es sich handelt, erst ab da gibt das "Casting" überhaupt einen Sinn.
Wobei ich mir grad selber, beim Schreiben dieses Textes unsicher werde...
wie ist es denn mit "Little Endian" und "Big Endian" ? Zeigt der Pointer dann stets auf das erste Byte ? Dann könnte dies das MSB oder auch das LSB sein. Nehmen wir mal an, ich habe eine 16 Bit Variable. In Intel Notation (Little endian) steht dann das Low Byte z.B. bei Adresse 1000, dann steht das High Byte bei 1001. In Motorola Notation steht dann das High Byte bei 1000 und das Low Byte bei 1001. Wenn ich nun einen Pointer auf diese Variable setze, wo zeigt er dann eigentlich hin ??
Wenn ich nun einen Typecast auf das adressierte Byte mache, und um eins erhöhe, könnte das +1 oder +256 sein.
Ist mir jetzt zu schwierig, muss ich mal drüber schlafen....
muss mich eben revidieren:
zu PicNick
Habe eben nochmal simuliert:
n = (void*) TestData; /* angeblich inhalt Testdata, laut PicNick */
n = (void*) &TestData; /* adresse TestData */
in beiden Fällen wird n auf die Adresse von Testdata gesetzt.
wenn ich nichts falsch gemacht habe....
Siro
Lesezeichen