int-Variable als Pointer an Funktion übergeben?
-
Hey Leute!
Hab da folgendes Programm:
#include<iostream> using namespace std; void eingabe(char* satz, int* zaehler) { char zeichen; zeichen = getchar(); while(zeichen != '\n') { *satz = zeichen; zeichen = getchar(); satz++; *zaehler++; } *satz = '\0'; } int main() { char satz[1000]; int zaehler = 0; eingabe(satz, zaehler); for(int i=0; i<*zaehler; i++) { satz[i] = tolower(satz[i]); } satz[2]; return 0; }
Ich möchte nun die Variable zaehler an die Funktion Eingabe als Pointer übergeben damit mir per Seiteneffekte der Zählerstand verändert wird. Aber irgendwie funktioniert das nicht. Könnt ihr mir helfen?
-
#include<iostream> using namespace std; void eingabe(char* satz, int* zaehler) { char zeichen; zeichen = getchar(); while(zeichen != '\n') { *satz = zeichen; zeichen = getchar(); satz++; *zaehler++; } *satz = '\0'; } int main() { char satz[1000]; int zaehler = 0; eingabe(satz, &zaehler); for(int i=0; i<zaehler; i++) { satz[i] = tolower(satz[i]); } satz[2]; return 0; }
Ich hab's jetzt mal abgeändert. Ich übergebe der Funktion die Adresser der int Variable zaehler. Innerhalb der Funktion dereferenziere (ich hol also den Wert aus der Adresse raus) verändere diesen Wert. Das sollte doch nun eigetnlich funktionieren. Tut's aber nicht. in der for-Schleife hab ich immer noch die 0 stehen die ich in der main deklariert hab. Was ist da falsch?
-
Was meinst du macht
*zaehler++;
?Das ist gleichbedeutend mit
*(zaehler++);
Andererseits kannst du bei eingabe() dafür auch die Funktionsrückgabe benutzen.
-
#include<iostream> using namespace std;
Die beiden Zeilen sind übrigens C++. Kopierst du einfach Quelltexte aus dem Internet zusammen?
-
Danke. ich hab das Problem nun selbst gelöst.
-
vip@r schrieb:
Danke. ich hab das Problem nun selbst gelöst.
Und was war es?