(Haftungsausschluss: Zeiger in C++ ist ein sehr beliebtes Thema und so bin ich gezwungen zu glauben, dass jemand vor mir diesen Punkt bereits angesprochen hat. Ich konnte jedoch keine andere Referenz finden. Bitte korrigieren Sie mich und fühlen Sie sich frei Schließen Sie diesen Thread, wenn ich falsch liege.)Was ist ein praktischer Anwendungsfall für "Adresse von Array"?
Ich bin auf viele Beispiele gestoßen, die zwischen Zeiger auf das erste Element des Arrays und Zeiger auf das Array selbst unterscheiden. Hier ist ein Programm und seine Ausgabe:
//pointers to arrays
#include <iostream>
using namespace std;
int main() {
int arr[10] = {};
int *p_start = arr;
int (*p_whole)[10] = &arr;
cout << "p_start is " << p_start <<endl;
cout << "P_whole is " << p_whole <<endl;
cout << "Adding 1 to both . . . " <<endl;
p_start += 1;
p_whole += 1;
cout << "p_start is " << p_start <<endl;
cout << "P_whole is " << p_whole <<endl;
return 0;
}
Ausgang:
p_start is 0x7ffc5b5c5470
P_whole is 0x7ffc5b5c5470
Adding 1 to both . . .
p_start is 0x7ffc5b5c5474
P_whole is 0x7ffc5b5c5498
So, wie erwartet, die Zugabe von 1 bis beide gibt unterschiedliche Ergebnisse. Aber ich bin nicht in der Lage, eine praktische Anwendung für so etwas wie p_whole
zu sehen. Sobald ich die Adresse des gesamten Array-Blocks habe, die auch mit arr
erhalten werden kann, was kann ich mit solch einem Zeiger tun?
In C++ gibt es nicht, da Sie stattdessen den Verweis auf das Array verwenden könnten. Der Verweis auf ein Array ist sehr nützlich (z. B. die kanonische Implementierung, die Dimension eines Arrays basierend auf seinem Namen zu erhalten). –