ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
681
681
EMPFEHLEN
-
02.02.05 15:10 #1jo 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 !
-
02.02.05 20:06 #2colt4ever 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:
Ich hoffe es funktioniertCode :1 2
char *abc; aender_das(&abc); //übergibt die Adresse des Arrays der Funktion
-
02.02.05 21:53 #3Ja is auch klar du übergibst deiner Funktion aender_das eine Addresse
Zitat von Spaco
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"
----
-
02.02.05 22:10 #4
Zitat von colt4ever
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"
----
-
03.02.05 09:17 #5
Dankeschön,hat funktioniert.
Wir sind alle nur Spielfiguren in einem sehhhhhhhr großen Spiel !
Ähnliche Themen
-
Wert aus void() funktion auslesen ?
Von trollchen im Forum C/C++Antworten: 7Letzter Beitrag: 07.04.08, 13:54 -
Eine Frage zu Void Zeiger !
Von QXV im Forum C/C++Antworten: 2Letzter Beitrag: 10.12.07, 18:23 -
[C] Triple - Zeiger , aber Wert Addition falsch
Von mc_gulasch im Forum C/C++Antworten: 1Letzter Beitrag: 18.09.06, 16:01 -
bei parameterübergabe wert verändern
Von steve11 im Forum PHPAntworten: 1Letzter Beitrag: 24.03.06, 13:53 -
ini-Datei wert verändern!
Von maho15 im Forum Visual Basic 6.0Antworten: 8Letzter Beitrag: 16.01.04, 09:46




Zitieren
Login
