Char Arrays in Funktion übergeben



  • Hallo liebe C++ Community...
    Ich habe schon lange nach einer Lösung gesucht und bis jetzt nichts gefunden. Also ich habe einen Code in dem ich von der Main Funktion etwas in eine void Funktion übertragen will jedoch weiß ich nicht wie ich das mit char arrays mache. Mit integer funktioniert es.

    #include <iostream>
    #include <windows.h>
    
    using namespace std;
    
    void berechnen(int *ppunkte);
    void namensgebung(char * name);
    
    int main()
    {
    	int punkte = 500;
    
    	cout << "Punkte: " << punkte << endl;
    
    	berechnen(&punkte);
    
    	char name[6] = "Test";
    
    	cout << endl << endl << "Name: " << name;
    
    	namensgebung(&name[6]);
    
    	getchar();
    
    	return 0;
    }
    
    void berechnen(int *ppunkte)
    {
    	cout << "Punkte: " << *ppunkte;
    }
    
    void namensgebung(char * name)
    {
    	cout << endl << "Name: " << name;
    }
    

    Ich bin übrigens absoluter Anfänger ^^ freue mich auf eure antworten 🙂



  • Probiere es mal mit

    namensgebung(&name[0]);
    

    Wichtig zu wissen: die eckigen Klammern binden stärker als das &.

    Du holst dir also mit name[0] das erste Zeichen und mit dem & davor die Adresse des ersten Zeichens.

    char name[6] = "Test";
    

    Hier hast du also ein Array von Zeichen der Länge 6, es ist gültig von name[0] bis name[5]. Wenn du also die Adresse von name[6] holst, ist das sicher falsch.



  • wob schrieb:

    Probiere es mal mit

    namensgebung(&name[0]);
    

    Wichtig zu wissen: die eckigen Klammern binden stärker als das &.

    Du holst dir also mit name[0] das erste Zeichen und mit dem & davor die Adresse des ersten Zeichens.

    char name[6] = "Test";
    

    Hier hast du also ein Array von Zeichen der Länge 6, es ist gültig von name[0] bis name[5]. Wenn du also die Adresse von name[6] holst, ist das sicher falsch.

    Danke hat genau so geklappt. Man was ein dummer Fehler von mir 😃



  • Nachtrag:
    vielleicht probierst du auch mal aus Spaß

    namensgebung(&name[1]);
    namensgebung(&name[2]);
    

    oder sogar

    namensgebung(name);
    

    😉



  • Benutze std::string statt char-Arrays. Das wird viele Abstürze vermeiden.



  • Knochey schrieb:

    Mit integer funktioniert es.

    Arrays sind ja auch etwas anderes.
    Das ist so anders, dass es in den Lehrbüchern darüber eigene Kapitel gibt.


Anmelden zum Antworten