Pointer und char-Übung



  • Hi, ich habe noch eine Frage...

    Das Programm soll ein Wort einlesen und die Adresse jedes einzelnen Buchstaben ausgeben.
    Ich hab versucht eins zu schreiben, aber irgendwie ist eine Endlosschleife entstanden, wobei keine Fehler angezeigt werden.
    Als Tip bei der Aufgabe steht auch, dass man CASTS benutzen soll, aber ich seh da kein Sinn nen Cast zu benutzen... 😞
    helft mir bitte

    #include <iostream>
    using namespace std;
    
    main()
    {
    	char wort[11];
    
    	cout << "Geben Sie ein Wort ein: ";
    	cin >> wort;
    
    	while(wort)
    	{
    		cout << "\n" << &wort;
    		(*wort)++;
    	}
    
    	fflush(stdin); cin.peek();
    	return 0;
    }
    


  • #include <iostream>
    using namespace std;
    
    main()
    {
      char wort[11];
    
      cout << "Geben Sie ein Wort ein: ";
      cin >> wort;
    
      /* schlechte idee hier wort als zähler zu benutzen */
      char *ptr = wort; /* zeigt jetzt auf den ersten buchstaben */
    
      while(*ptr) /* nicht die adresse soll geprüft werden sondern der inhalt */
      {
        cout << "\n" << (void*)ptr; /* einfache methode um nen zeiger zur ausgabe zu bringen (? standardkonform ?) */
        ++ptr; /* wir wollen nicht den inhalt, also das zeichen erhöhen sondern die adresse */
      }
      return 0;
    }
    


  • #include <iostream>
    using namespace std;
    
    int main() {
        char c[11];
        cin >> c;
    
        char *p=c;
        while(*p) 
            cout << static_cast<void*>(p++) << endl;
        return 0;
    }
    


  • Aber wieso muss das in void gecastet werden??
    Das versteh ich gar nicht 😞

    und wieso muss bei char * zeiger = wort; kein & vors wort? es soll doch die adresse zugeordnet werden...

    Aja und vielen Dank schon mal!!!



  • Der Name eines Feldes kann als Zeiger auf sein erstes Element benutzt werden. Wenn du das einem Pointer zuweist, wird das implizit gecastet. char[11] ist ja kein String, sondern ein Array (Feld).

    Bei char* musst du casten, weil sonst der Buchstabe ab der Stelle an die dein Zeiger zeigt ausgegeben werden würde.



  • Mit cast-to-void* bekommst Du Adressen geliefert, ohne würdest Du den Text ab der Stelle bekommen, z.B. (Text "Hallo Welt")

    Hallo Welt
    allo Welt
    llo Welt
    lo Welt

    usw.



  • Danke euch 🙂 habs jetzt endlich verstanden!


Anmelden zum Antworten