| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
Florian Super JLI'ler

Alter: 37 Anmeldedatum: 20.06.2003 Beiträge: 302
Medaillen: Keine
|
Verfasst am: 07.07.2005, 10:03 Titel: :( Zeiger als Rückgabewert |
|
|
Hallo
Ich kann mir nicht helfen aber ich find den Fehler einfach nicht ;(
Aber ihr findet ihn bestimmt sofort wäre ja NORMAL nicht so schwer
| CPP: | #include <stdio.h>
int* versuch()
{
int test[2];
test[1] = 5;
test[2] = 8;
return test;
};
int main()
{
int* probe;
probe = versuch();
printf("%d",probe[1]);
return 0;
}
|
Thx schon im Voraus _________________ Theorie ist, wenn man alles weiss und nichts funktioniert.
Praxis ist, wenn alles funktioniert und keiner weiss warum. |
|
| Nach oben |
|
 |
Blubb-Tec JLI'ler

Alter: 34 Anmeldedatum: 29.03.2005 Beiträge: 171 Wohnort: Düsseldorf Medaillen: Keine
|
Verfasst am: 07.07.2005, 10:08 Titel: |
|
|
also, meiner meinung nach, soll die funktion int* Versuch, ja einen Zeiger vom Typ Integer zurückgeben, gibt aber nur eine Integer Variable zurück, ich meine es müsste:
heissen, oder du legst test mit new an, dann könntest du test zurückgeben
bin mir aba nich sicher, ich übernehm keine Verantwortung [/code] _________________ www.planlos.de |
|
| Nach oben |
|
 |
Florian Super JLI'ler

Alter: 37 Anmeldedatum: 20.06.2003 Beiträge: 302
Medaillen: Keine
|
Verfasst am: 07.07.2005, 10:14 Titel: |
|
|
Danke fuer die rasche Antwort
hat aber leider nicht Funktioniert das mit return &test;
aber lieg ich da richtig.
Bei einem Array ist der Namen (test) gleich die anfangs Adresse.
Also test = &test[0]
Und wenn das so richtig ist dann mueste doch die funktion die anfangsadresse zurückgeben. _________________ Theorie ist, wenn man alles weiss und nichts funktioniert.
Praxis ist, wenn alles funktioniert und keiner weiss warum. |
|
| Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 38 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 07.07.2005, 11:20 Titel: |
|
|
du erstellst eine lokale Variable und gibts einen Zeiger auf die Zurück das ist leider falsch, den die Variable wird gelöscht werdne wenn die Funktion vorbei ist, somit ist der Zeiger ungültig. Du musst das Array mit new erstellen und mit delete löschen damit das funktionieren kann. _________________ https://jonathank.de/games/ |
|
| Nach oben |
|
 |
Dragon Super JLI'ler

Alter: 39 Anmeldedatum: 24.05.2004 Beiträge: 340 Wohnort: Sachsen Medaillen: Keine
|
Verfasst am: 07.07.2005, 11:22 Titel: |
|
|
das kann gar nicht funktionieren
Merke: Gieb niemals den zeiger einer lokalen varible zurück, wenn dann musst du das so machen
| CPP: | int* versuch()
{
int* test = new int[2];
test[1] = 5;
test[2] = 8;
return test;
};
int main()
{
int* probe;
probe = versuch();
printf("%d",probe[1]);
//nicht vergessen, Speicher freigeben
delete[] probe;
return 0;
} |
eidt: sorry hab was vertauscht
edit2: jetzt aber  _________________ Nur wenn man ein Ziel sieht, kann man es auch treffen.
___________
Mein Leben, Freunde und die Spieleentwicklung |
|
| Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 38 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
|
| Nach oben |
|
 |
Florian Super JLI'ler

Alter: 37 Anmeldedatum: 20.06.2003 Beiträge: 302
Medaillen: Keine
|
Verfasst am: 07.07.2005, 11:51 Titel: |
|
|
Danke das war der Fehler
Aber wenn ich das array einfach als static deklaire mueste es doch auf funktionieren oder nicht.
Denn dann bleibt es auch beim beenden der Funktion erhalten.
THX _________________ Theorie ist, wenn man alles weiss und nichts funktioniert.
Praxis ist, wenn alles funktioniert und keiner weiss warum. |
|
| Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 07.07.2005, 12:03 Titel: |
|
|
| Dragon hat Folgendes geschrieben: | das kann gar nicht funktionieren
Merke: Gieb niemals den zeiger einer lokalen varible zurück, wenn dann musst du das so machen
| CPP: | int* versuch()
{
int* test = new int[2];
test[1] = 5;
test[2] = 8;
return test;
};
|
|
das verursacht zwar keinen Error(wegen dynamisch), is aber trotzdem falsch
Bevor jetzt einer den Fehler rumposaunt, versuch erstmal selber draufzuzkommen Dragon. Dann machst du den bestimmt net nochma(learning by doing)
Gruß DirectXer |
|
| Nach oben |
|
 |
abc_d JLI Master Trainee

Alter: 35 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
|
| Nach oben |
|
 |
Fallen JLI MVP


Alter: 41 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 07.07.2005, 12:50 Titel: |
|
|
| CPP: | int *versuch()
{
static int test[2];
test[0] = 5;
test[1] = 8;
return test;
} |
_________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
| Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 07.07.2005, 13:10 Titel: |
|
|
| FallenAngel84 hat Folgendes geschrieben: | | CPP: | int *versuch()
{
static int test[2];
test[0] = 5;
test[1] = 8;
return test;
} |
|
du bist gemein Jetzt wird er den Fehler immer wieder machen.
*beleidigt_PhotonenLaser_aufheb_und_Fallen_suchen_geh* |
|
| Nach oben |
|
 |
Fallen JLI MVP


Alter: 41 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 07.07.2005, 13:12 Titel: |
|
|
| DirectXer hat Folgendes geschrieben: | | FallenAngel84 hat Folgendes geschrieben: | | CPP: | int *versuch()
{
static int test[2];
test[0] = 5;
test[1] = 8;
return test;
} |
|
du bist gemein Jetzt wird er den Fehler immer wieder machen.
*beleidigt_PhotonenLaser_aufheb_und_Fallen_suchen_geh* |
Sollte er sich den Code genauer ansehen dann wohl nicht. Tip: Arrayindex beachten. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
| Nach oben |
|
 |
Dragon Super JLI'ler

Alter: 39 Anmeldedatum: 24.05.2004 Beiträge: 340 Wohnort: Sachsen Medaillen: Keine
|
Verfasst am: 07.07.2005, 17:05 Titel: |
|
|
| DirectXer hat Folgendes geschrieben: | | Dragon hat Folgendes geschrieben: | das kann gar nicht funktionieren
Merke: Gieb niemals den zeiger einer lokalen varible zurück, wenn dann musst du das so machen
| CPP: | int* versuch()
{
int* test = new int[2];
test[1] = 5;
test[2] = 8;
return test;
};
|
|
das verursacht zwar keinen Error(wegen dynamisch), is aber trotzdem falsch
Bevor jetzt einer den Fehler rumposaunt, versuch erstmal selber draufzuzkommen Dragon. Dann machst du den bestimmt net nochma(learning by doing)
Gruß DirectXer |
ich hab den fehler schon gesehen, aber ich denke nicht einmal daran den rauszunehmen, ich hab nur den Quelltext kopiert und angepasst, so wie er es wollte  _________________ Nur wenn man ein Ziel sieht, kann man es auch treffen.
___________
Mein Leben, Freunde und die Spieleentwicklung |
|
| Nach oben |
|
 |
|