On Sat, Apr 05, 2003 at 12:53:14PM +0200, Peter Sattler wrote:
Hallo
Ich versuche gerade meine C-Kenntnisse wiederzubeleben und komme bei einem der Standardbeispiele nicht weiter. Thema ist Übergabe von Parametern an Funktionen per Referenz.
Referenzen gibt's in C nicht.
void swap( int &i1, int &i2) { int t; t = i1; i1 = i2; i2 = t; }
main() { int a , b ; swap (a,b); }
Mein Compiler (gcc 2.95) meldet sich mit :
test01.c:1: parse error before `&'
Vielleicht nennst Du die Quelle einfach mal test01.cc und versuchst es dann nochmal. Oder schaffst es auf andere Weise, g++ (c++) zu nutzen.
und danach noch Fehlermeldungen wegen nicht deklarierter Variablen i1 und i2. Hab ich ein altes Buch erwischt oder ist das nicht Standard ? Ich bin perplex.
Du wirst ein C++-Buch erwischt haben. In C wäre obiges so realisiert:
void swap(int *i1, int *i2) { int t; t = *i1; *i1 = *i1, *i2 = t; }
int main() { int a, b; swap(&a, &b); }
Was auch viel durchsichtiger ist. Denn Referenzen als Pointerersatz zu nutzen ist nicht immer sehr weise. (Mag aber auch wieder Ansichtssache sein. - Im obigen Beispiel ist am Funktionsnamen ja gerade noch zu erkennen, was vielleicht passiert. Aber wenn Du folgenden Aufruf hast:
checkInt(a);
Kannst Du dann sagen, ob der für a gefährlich oder ungefährlich ist (will sagen, kann Deinem a etwas passieren? Das kannst Du erst etwas besser beurteilen, wenn Du den Prototyp geshen hast, und siehst, ob a als Refernz oder als Kopie übergeben wird.))
[Aber die letzten Sätze waren etwas OT, gebe ich zu.]
Best regards from Dresden Viele Gruesse aus Dresden Heiko Schlittermann