ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
766
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
  1. #1
    Avatar von reBourne
    reBourne ist offline Mitglied Silber
    Registriert seit
    Jun 2002
    Ort
    Gelsenkirchen(NRW)
    Beiträge
    94
    jo moin

    ich hab folgendes prob:

    ich möchte in eine klasse in void einen wert verändern, der nicht klassenintern ist. also dachte ich dabei an einen zeiger auf die entspr. stelle im speicher und überlegte, es könne so funktionieren:

    void aender_das (char* zeiger) { zeiger = "blabla"; }

    und habe meinetwegen im hauptprogramm

    char abc[];
    aender_das(&abc);

    so in etwa stelle ich mir das vor, aber was auch immer ich ausprobiere, ich krieg das einfach net hin :/
    mit den ganzen möglichkeiten von wegen [] und * und & und unsigned und const komme ich sowieso schon nicht so ganz klar, ich weiß zwar in etwa was sie bewirken aber dauernd kriege ich fehler wie char * kann char nicht zugewiesen werden usw. und kann damit dann meistens nix anfangen

    deshalb hätte ich das gerne mal genauer erklärt. hoffe, das problem ist verständlich genug
     
    Wir sind alle nur Spielfiguren in einem sehhhhhhhr großen Spiel !

  2. #2
    colt4ever Tutorials.de Gastzugang
    Probier einmal:

    in der Klasse:
    Code :
    1
    2
    
    void aender_das(char **zeiger) {strcpy(*zeiger,"blabla"); }   
    //**zeiger ist einpointer auf ein array

    Aufruf:

    Code :
    1
    2
    
    char *abc;
    aender_das(&abc);   //übergibt die Adresse des Arrays der Funktion
    Ich hoffe es funktioniert
     

  3. #3
    Registriert seit
    Oct 2003
    Beiträge
    1.707
    Zitat Zitat von Spaco
    void aender_das (char* zeiger) { zeiger = "blabla"; }

    und habe meinetwegen im hauptprogramm

    char abc[];
    aender_das(&abc);

    so in etwa stelle ich mir das vor, aber was auch immer ich ausprobiere, ich krieg das einfach net hin :/
    Ja is auch klar du übergibst deiner Funktion aender_das eine Addresse
    nämlich die auf die abc zeigt.
    Dann weist du deinen Pointer zeiger zeiger = "blabla"; eine andre Addresse
    zu nämlich die Anfangsaddresse von "blabla".
    Somit weißt du zeiger ein komplett neues Objekt einschließlich neuer
    Addresse zu.

    Wenn du es ändern möchtest hat colt4ever schon die richtige Lösung,
    oder du veränderst den Inhalt und weißt dem Objekt zeiger nicht ne
    komplett neue Addresse zu.
    Ungefähr so:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    #include <iostream>
     
    using namespace std;
     
    void aender_das(char* zeiger){
     
            for(char* pos = zeiger; *pos != 0; pos++)
                    *pos = 'a';          
    }
     
    int main(){
     
            char word[] = "hallo";
            aender_das(word);    
            cout << word << endl;
            
     
    }

    Gruß

    RedWing
     
    "I'm not deaf, I'm ignoring you"
    ----

  4. #4
    Registriert seit
    Oct 2003
    Beiträge
    1.707
    Zitat Zitat von colt4ever
    Probier einmal:

    in der Klasse:
    Code :
    1
    2
    
    void aender_das(char **zeiger) {strcpy(*zeiger,"blabla"); }   
    //**zeiger ist einpointer auf ein array

    Aufruf:

    Code :
    1
    2
    
    char *abc;
    aender_das(&abc);   //übergibt die Adresse des Arrays der Funktion
    Ich hoffe es funktioniert

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    #include <iostream>
     
    using namespace std;
     
    void aender_das(char* zeiger){
     
            strcpy(zeiger, "test");
    }
     
    int main(){
     
            char word[] = "hallo";
            aender_das(word);
            cout << word << endl;
            
     
    }

    Das sollte auch reichen, wichtig is nur das er den Inhalt nicht die Addresse
    ändert.

    Gruß

    RedWing
     
    "I'm not deaf, I'm ignoring you"
    ----

  5. #5
    Avatar von reBourne
    reBourne ist offline Mitglied Silber
    Registriert seit
    Jun 2002
    Ort
    Gelsenkirchen(NRW)
    Beiträge
    94
    Dankeschön,hat funktioniert.
     
    Wir sind alle nur Spielfiguren in einem sehhhhhhhr großen Spiel !

Thema nicht erledigt

Ähnliche Themen

  1. Wert aus void() funktion auslesen ?
    Von trollchen im Forum C/C++
    Antworten: 7
    Letzter Beitrag: 07.04.08, 13:54
  2. Eine Frage zu Void Zeiger !
    Von QXV im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 10.12.07, 18:23
  3. [C] Triple - Zeiger , aber Wert Addition falsch
    Von mc_gulasch im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 18.09.06, 16:01
  4. bei parameterübergabe wert verändern
    Von steve11 im Forum PHP
    Antworten: 1
    Letzter Beitrag: 24.03.06, 13:53
  5. ini-Datei wert verändern!
    Von maho15 im Forum Visual Basic 6.0
    Antworten: 8
    Letzter Beitrag: 16.01.04, 09:46