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.


Anmelden zum Antworten