Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Mehr als ein Wert mit Return zurückgeben?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] [ 2 ] [ 3 ] > 4 < [ 5 ] [ 6 ]
030
29.11.2003, 15:03 Uhr
Pablo
Supertux
(Operator)



Zitat:
derphilipder postete

@pablo
damit weist er doch den pointer an das erste feldelement zu, das geht doch auch nicht, oder!?


Versuch folgendes zu tun:

C++:
int* foo(int* o)
{
    return o;
}

int main()
{
    int i[2], p[2];
    i = foo(p);
    return 0;
}

Genau, das was das steht.


Code:
rex@supertux:~> gcc a.c -oa
a.c: In function `main':
a.c:9: error: incompatible types in assignment



wenn ich aber:

C++:
int* foo(int* o)  
{
    return o;
}

int main()
{
    int *i, p[2];
    i = foo(p);  
    return 0;                  
}



wird ohne Probleme kompiliert. Du kannst nur Sachen gleiches Typs zuweisen. Man kann Pointer udn Array gleich behandeln, sie sind ander unterschiedliche Strukturen.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
031
29.11.2003, 15:07 Uhr
Pablo
Supertux
(Operator)



Zitat:
derphilipder postete
Kein Fehler - Referenz! :)

Natürlich muss die Funktion dann geändert werden!



C++:
int foo(int a&)
{
    return a;
}

int main()
{
    int z;
    foo(z);
    return 0;
}




Code:
rex@supertux:~> g++ -oa a.cpp
a.cpp:1: error: parse error before `&' token
a.cpp: In function `int foo(...)':
a.cpp:3: error: `a' undeclared (first use this function)
a.cpp:3: error: (Each undeclared identifier is reported only once for each
   function it appears in.)



Wenn du aber
C++:
int foo(int &a)
deklarierst, dann geht es.

Das ist was ich gemeint habe.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 29.11.2003 um 15:08 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
032
29.11.2003, 15:08 Uhr
~Benny
Gast


Bei deinem Bsp. ist aber o keine array, ich hab bei o ein array und i ist auch ein array. ??
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
033
29.11.2003, 15:10 Uhr
Pablo
Supertux
(Operator)


das spielt keine Rolle, ich wollte nur das mit dem Return und Zuweisung von pinter mit Arrays zeigen.


Bearbeitung von Supertux:

Das ist was ich zeigen wollte:

C++:
i = foo(p);





Bearbeitung von Supertux:


C++:
[b]int[/b] main ()
{
int var1 [20], var2 [2];

var1 = funktion(var2,var1);
}

int funktion (int var3[2], int var3[20])
{
return (var3);
}


Das sind für mich 2 Arrays und das wollte ich klar machen, warum var1=funktion.... nicht geht.


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 29.11.2003 um 15:16 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
034
29.11.2003, 15:12 Uhr
derphilipder



Ich glaube, wir treiben Benny in den Suizid!
--
Konfuzius says: "A man who goes to bed with an itchy asshole is a man who wakes up with stinky finger!"
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
035
29.11.2003, 15:15 Uhr
Pablo
Supertux
(Operator)



Zitat:
derphilipder postete
Ich glaube, wir treiben Benny in den Suizid!


vielleicht, aber das ist wchtig, dass er versteht, wie das geht. Als ich noch Anfänger war, hat mir das Kopfschmerzen vorbeireitet, deshalb habe ich char* gehasst, fand ich so schwierig und hab nie mit Zeichenketten gerabeitet. Heute ist das für mich schon einfach.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
036
29.11.2003, 15:20 Uhr
~Benny
Gast



C++:
int* foo(int* o)  
{
    return o;
}

int main()
{
    int *i, p[2];
    i = foo(p);  
    return 0;                  
}



Da bekomm ich den Wert den ich am anfang in p[2] hatte geändert wieder zurück aber dann in *i oder wie? es soll wieder in die gleiche variable, aber dann hab ich ja wieder das problem mit int und int*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
037
29.11.2003, 15:20 Uhr
derphilipder



Mit der Referenz hattest Du natürlich recht...
--
Konfuzius says: "A man who goes to bed with an itchy asshole is a man who wakes up with stinky finger!"
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
038
29.11.2003, 15:28 Uhr
~Benny
Gast



C++:

int main ()
{
int var1 [20], var2 [2];

var1 = funktion(var2,var1);
}

int funktion (int var3[2], int var3[20])
{
return (var3);
}




is mir klar, das ist falsch, aber hab ich ja auch nur ausversehen falsch gepostet.


C++:
int main ()
{
int var1 [20], var2 [2];

var2 = funktion(var1, var2);
}

int funktion (int var3[20], int var4[2])
{
return (var4);
}



ich geb jetzt einfach nur einen bestimmten wert des arrays zurück, damit komm ich auch aus, ich werde das schon umgehen können, im pfuschen bin ich gut. :o)
Hab mal Pascal gemacht und weiß ich mit halber Sache auch auskomm, aber ich muss das verdammt nochmal doch irgendwie verstehen. *grrrr*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
039
29.11.2003, 15:32 Uhr
Pablo
Supertux
(Operator)



Zitat:
~Benny postete


Da bekomm ich den Wert den ich am anfang in p[2] hatte geändert wieder zurück aber dann in *i oder wie? es soll wieder in die gleiche variable, aber dann hab ich ja wieder das problem mit int und int*


Ja so ist es. Aber das p[0] und p[1] nicht initilisiert wurden, bekomms du in diesem Fall komische Werte.
Ich wollte nur das Zuweisen mit pointer-Funktionen mit Arrays und Pointers zeigen.


Bearbeitung von Supertux:


Zitat:
~Benny postete

C++:
int funktion (int var3[20], int var4[2])
{
return (var4);
}



ich geb jetzt einfach nur einen bestimmten wert des arrays zurück, damit komm ich auch aus, ich werde das schon umgehen können, im pfuschen bin ich gut. :o)
Hab mal Pascal gemacht und weiß ich mit halber Sache auch auskomm, aber ich muss das verdammt nochmal doch irgendwie verstehen. *grrrr*


Das ist immer noch falsch. Denn var4 ein Array ist und du musst eine int Variable zurückliefern.


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 29.11.2003 um 15:34 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] [ 3 ] > 4 < [ 5 ] [ 6 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: