Adressen der Elemente eines Arrays ausgeben.
-
Um mit Zeigern im Zusammenhang mit Arrays ein bißchen zu üben, habe ich bei folgendem Programm
die Ausgabe in Zeile 21 um den Code<<&charArray[i]<<ergänzt.
Ich wollte mir ganz gerne mal die Adressen der einzelnen Elemente ausgeben lassen.Auf der Konsole wird dann ausgegeben(Die Zeichen links vor den Spiegelstrichen sind die eingegebenen Zeichen):
a - asdfghjjkl♦ ( s - sdfghjjkl♦ ( d - dfghjjkl♦ ( f - fghjjkl♦ ( g - ghjjkl♦ ( h - hjjkl♦ ( j - jjkl♦ ( j - jkl♦ ( k - kl♦ ( l - l♦ (Vermutlich habe ich irgendwo einen Fehler gemacht. Kann mir jemand auf die Sprünge helfen?
#include <iostream> using namespace std; int main() { char charArray[10]; //legt ein Zeichen-Array an char* pArray=&charArray[0]; // oder char* pArray=charArray; //Eingabe der Werte des Array mittels Zeigern und Schleife for(int i=0;i<10;i++) { cout<<"Bitte geben Sie ein Zeichen ein: "<<flush; cin>>*pArray; pArray++; } //Ausgabe des Array mittels Zeigern und Schleife //Ausgegeben werden soll der Wert des Elements sowie die Adresse for(int i=0;i<10;i++) { cout<<charArray[i]<<" - "<<&charArray[i]<<endl; } return 0; }
-
Erstens kann es riskant sein, direkt in ein char-Array zu schreiben, weil der Eingabe-Operator nicht weiß wieviel Platz er dort hat. In dem Fall hast du wohl zu viel eingegeben, was die seltsamen
erklären könnte.Zweitens (und damit zu deiner Frage): Du übergibst einen char-Zeiger an den Ausgabe-Operator - und für den gibt es eine spezielle Überladung, die ihn als Anfangspunkt eines C-Strings interpretiert. Wenn du den Zeiger als Adresse ausgeben willst, mußt du ihn in einen void* casten.