Nachdem Sie den Code unten ausgeführt wird, erhalte ich Ausgabe als 4.Wert durch Zeiger Subtraktion in einem bestimmten C-Code erzeugt
Kann mir jemand erklären, was in diesem Code geschieht.
Von meinem Verständnis:
Adresse von a [1], dh Array-Elemente 20 Adresse wird in Zeigervariable p gespeichert, und die Adresse 60 wird in der Variablen q gespeichert. q-p ist fertig und es wird gedruckt. Aber Ich habe erwartet, dass die Ausgabe etwas anderes ist.
Zum Beispiel unter Berücksichtigung der Startadresse des ersten Elements 100 zu sein und jedes Element benötigt 2 Bytes für die ganze Zahl. dann ist eine [0] Adresse 100, ein [1] 102, ein [2] 104, ein [3] 106, ein [4] 108, ein [5] 110.
jetzt Adresse von a [5] -Adresse eines [1] = 110-102 = 8
Aber Wert ist 4. Jede Erklärung dafür. Wo fehlt mir etwas?
Here (CodePad link) ist der C-Code:
int main()
{
int a[] = { 10, 20, 30, 40, 50, 60 };
int *p = &a[1], *q = &a[5];
printf("%d",q - p);
return 0;
}
Weil '5 - 1 = 4', der Unterschied in den Indexwerten. –
weil int Zeigern mem-Adressen in den Schritten zählen, 4 stellt die Menge an Speicher/sizeof (int) zwischen a [1] und a [5]. – George
Sie benötigen '* q - * p ', wenn Sie die Werte subtrahieren möchten. Was Sie gerade tun, ist ihre Speicherwerte zu subtrahieren (was nicht anders ist als nur 5 - 1). – Rockybilly