Wenn wir einen ganzzahligen Zeiger dereferenzieren sagen * (int *)
wie wir wissen, dass Integer-Zeiger dominieren 8 Byte in 64-Plattform. aber integer dauert immer noch 4 Byte in 64 Plattform.Dereferenz eine Ganzzahlzeiger auf 64-Bit-Plattform
Was ist, wenn ich einen Zeiger dereferenzieren möchte, wo der Anfang seines Speichers eine andere Zeigeradresse enthält. also eigentlich möchte ich den Wert der ersten 8 Bytes nehmen. wird dereferenz * (int *) 4 Byte oder 8 Byte bekommen? Ich denke, es sollte 4 Byte als Integer 4 Byte sein. aber wie kann ich 8 Byte in 64-Bit-Plattform bekommen? ohne zu wissen, ob die Plattform 32 oder 64 Bit ist.
Es ist ein bisschen schwer zu folgen. Können Sie uns als Beispiel ein kleines Code-Snippet geben? – litelite
Wenn der "Anfang seines Speichers eine andere Zeigeradresse enthält", müssen Sie über einen Zeiger auf den Zeiger, nicht einen Zeiger auf int, dereferenzieren. Wenn das "Ding" an einer Adresse eine andere Adresse ist, dann ist ein Zeiger auf den Zeiger der einzige logische Weg, um zu (und schließlich * durch *) zu gelangen. Alles in allem hat dies einen fast überwältigenden stechenden Geruch eines [XY-Problems] (https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Was machst du wirklich, und wie bist du zu dieser Menagerie als Mechanismus gekommen, um es zu lösen? – WhozCraig
Wenn Sie versuchen, die Verwendung von 8 Bytes zu erzwingen, können Sie 'int64_t' anstelle von' int' verwenden. – MikeChav