Variabel über Funktion übergeben
-
#include <string> int main() { string *str; *str = "test"; }Wird mit
*stringpointer = "irgendwas";(wie nennt sich "irgendwas" - literal?) automatisch Speicher beschafft und gefüllt?
-
HighLigerBiMBam: Definitiv nicht schön
Was soll der Zeiger?Edit: Es tut auch nicht das, was du willst. Du dereferenzierst str, bevor da überhaupt ein Objekt dahintersteckt.
-
Danke HighLigerBiMBam
hat mich zur Lösung geführt.
-
TTS schrieb:
krümelkacker schrieb:
...Aber viel wichtiger: Schnapp Dir erstmal ein gutes C++ Buch und lerne. Du kannst nicht erwarten, dass Dir in einem Forum C++ von Grund auf beigebracht wird. (!)
Ich hab ein Buch, jedoch steht nicht das drin, was ich suche.
Welches Buch denn? Und wonach suchst Du?
TTS schrieb:
Und ausserdem muss das wohl ein 5000 Seiten Buch sein, wenn nicht einmal erfahrene C++ Programmierer dieses Problem lösen können

Du hast das Problem einfach nur schlecht präsentiert: Ein paar Code-Fetzen mit zig Fehlern drin und ein nicht klar formuliertes Ziel.
padreigh schrieb:
#include <string> int main() { string *str; *str = "test"; }Wird mit
*stringpointer = "irgendwas";(wie nennt sich "irgendwas" - literal?) automatisch Speicher beschafft und gefüllt?"test" ist ein Zeichenketten-Literal. Abgesehen davon, dass hier ein std:: vor string fehlt, ist die Zuweisung in der letzten Zeile nicht erlaubt, da der Zeiger str nicht initialisiert wurde.
#include <string> int main() { std::string s; std::string* z = &s; // z zeigt jetzt auf das Objekt s *z = "i like pointers"; }TTS schrieb:
Danke HighLigerBiMBam
hat mich zur Lösung geführt.Glaube ich nicht.
-
TTS schrieb:
Danke HighLigerBiMBam
hat mich zur Lösung geführt.
Nicht wirklich, das gesamte Verhalten ist undefiniert! Ich habe vorhin nicht nachgedacht.
#include <iostream> #include <string> using namespace std; void foo(string *wert) { cout << *wert; } int main() { string *str = new string("test"); foo(str); delete str; cin.get(); return 0; }
-
HighLigerBiMBam schrieb:
TTS schrieb:
Danke HighLigerBiMBam
hat mich zur Lösung geführt.
Nicht wirklich, das gesamte Verhalten ist undefiniert! Ich habe vorhin nicht nachgedacht.
#include <iostream> #include <string> using namespace std; void foo(string *wert) { cout << *wert; } int main() { string *str = new string("test"); foo(str); delete str; cin.get(); return 0; }Langsam krieg ich echt Augenkrebs
Lies dir das letzte Posting von krümelkacker nochmal durch, damit du merkst, dass dynamische Speicherreservierung nicht nötig ist. Danach schmeißt du den Pointer komplett raus.
-
string s = "test";
string *str = &s;Geht auch na und :P, Stack/Heap hauptsache nichtmehr undefiniert...
-
HighLigerBiMBam schrieb:
TTS schrieb:
Danke HighLigerBiMBam
hat mich zur Lösung geführt.
Nicht wirklich, das gesamte Verhalten ist undefiniert! Ich habe vorhin nicht nachgedacht.
#include <iostream> #include <string> using namespace std; void foo(string *wert) { cout << *wert; } int main() { string *str = new string("test"); foo(str); delete str; cin.get(); return 0; }Doch Tatsächlich.
string *measurementResult = new string; string *date = new string; string *time = new string; flukeReader.GetDCVoltage(measurementResult,date, time, range, vMode, version); cout << *measurementResult, *date, *timeObwohl ich eigentlich genau das umgekehrte brauchte, als du gepostet hast. Ich habe nur eine kleine denkhilfe benötigt

-
krümelkacker schrieb:
Welches Buch denn? Und wonach suchst Du?
Ich Hab die Fourth Edition von "DEITEL's" How to program C++ (leider englisch). Ich wollte wissen wie man aus einer Funktion einen String zurückbekommt. (nicht als return value sondern über die Argumente) Aber hat ja jetzt geklappt.
krümelkacker schrieb:
Du hast das Problem einfach nur schlecht präsentiert: Ein paar Code-Fetzen mit zig Fehlern drin und ein nicht klar formuliertes Ziel.
Ja hab gemerkt, das man mit diesem Codebeispiel nicht viel anfangen kann. Werde nächstes Mal Code aus dem projekt Posten.
-
TTS schrieb:
Ich Hab die Fourth Edition von "DEITEL's" How to program C++ (leider englisch). Ich wollte wissen wie man aus einer Funktion einen String zurückbekommt. (nicht als return value sondern über die Argumente) Aber hat ja jetzt geklappt.
Dann hättest du nach Referenzen suchen sollen. Sollte wohl irgendwo ganz am Anfang stehen. asc hat schon das richtige Beispiel gezeigt.
Grüssli
-
TTS schrieb:
krümelkacker schrieb:
Welches Buch denn? Und wonach suchst Du?
Ich Hab die Fourth Edition von "DEITEL's" How to program C++ (leider englisch).
Oh, das ist eines der schlechteren Bücher. Die verlinkte Kritik bezieht sich aber auf die 3. Edition. Vielleicht ist die 4. ja etwas besser.
TTS schrieb:
Ich wollte wissen wie man aus einer Funktion einen String zurückbekommt. (nicht als return value sondern über die Argumente).
Aha! Da gibt es viele Möglichkeiten. Das einfachste ist wohl eine Referenz.
kk
-
TTS schrieb:
Ich hab ein Buch, jedoch steht nicht das drin, was ich suche.
Ich bezweifle das in einem guten C++ Buch das Thema Referenzen nicht relativ weit vorne steht (und ebenso new/delete wenn du unbedingt - was in diesem Fall imho aber Schwachsinn ist - auf den Zeiger bestehst).
TTS schrieb:
Und ausserdem muss das wohl ein 5000 Seiten Buch sein, wenn nicht einmal erfahrene C++ Programmierer dieses Problem lösen können

Was ist bitte an meinem Code verkehrt? Ich würde hier keine Zeiger verwenden, ebenso wie der zweite Parameter wenn er nur ausgegeben, aber nicht verändert werden soll, keine modifizierbare Referenz sein sollte.