Ich habe das einfache Programm:Warum ist der Unterschied zwischen zwei Zeigern nicht gleich der Größe des Typs?
#include <iostream>
using namespace std;
int main()
{
int a = 5;
int b = 6;
int* p1 = &a;
int* p2 = &b;
std::cout << p1 << " " << p2 << " ,sizeof(int)=" << sizeof(int) << std::endl;
system("pause");
return 0;
}
Es produziert die folgende Ausgabe:
00DBF9B8 00DBF9AC ,sizeof(int)=4
aber, 00DBF9B8 - 00DBF9AC == С
. Ich kann dieses Ergebnis nicht verstehen.
Wenn ich das Programm wie folgt ändern:
#include <iostream>
using namespace std;
int main()
{
static int a = 5;
static int b = 6;
int* p1 = &a;
int* p2 = &b;
std::cout << p1 << " " << p2 << " ,sizeof(int)=" << sizeof(int) << std::endl;
system("pause");
return 0;
}
ich richtiges Ergebnis bekam:
00394000 00394004 ,sizeof(int)=4
Compiler müssen lokale Variablen nicht nacheinander einfügen –
Sie können keine Zeiger subtrahieren, die nicht auf Elemente desselben Arrays oder auf das erste Byte hinter dem Array zeigen. –
@SamiKuhmonnen Ich kann 10 Variablen erstellen. Alle Adressen unterscheiden sich durch "C". – Max