Call by Reference |
19.12.2013, 23:30 | Auf diesen Beitrag antworten » | ||||||||||
kim.... | Call by Reference hallo, ich habe ein Problem, und zwar folgendes Programm funktioniert nicht, allerdings weiß ich nicht warum... innerhalb der Funktion kann ich ja nix ändern. kann mir bitte jemand helfen? #include <stdio.h> int main() { int aufgabe4_1(int x){ aufgabe4_2(x*x); return (x); } int aufgabe4_2(int x){ aufgabe4_1(x+x); return (x); }} |
||||||||||
|
|||||||||||
20.12.2013, 02:37 | Auf diesen Beitrag antworten » | ||||||||||
Karlito | Hallo Kim, leider hinterlässt Du zu wenig Information. Aber schau dir mal bitte folgenden Code an:
Bitte beachte, dass der erste Code in C und C++ funktionert, der zweite jedoch nur mit C++. Das zweite stellt aber den genauen call by reference Prozess dar, da das & vor dem Parameter dafür sorgt, dass implizit Referenzen verwendet werden. Der Code von quad_ref ist aber in beiden Sprachen äquivalent und intern wird in C++ der Code von C umgesetzt. Wenn Du noch fragen hast, kannst du sie gerne hier stellen. Bitte gib aber an, welche Aufgabenstellung du hast und welche Sprache du verwenden sollst. Weiterhin wäre eine Angabe, was Du genau nicht verstehst hilfreich. VG, Karlito |
||||||||||
20.12.2013, 08:35 | Auf diesen Beitrag antworten » | ||||||||||
kim... | in C. Aufgabenstellung lautet: Kopieren Sie die beiden unten stehenden Funktionen und fügen Sie sie zu Ihrem Programm hinzu. Rufen Sie die Funktion aufgabe4_1(int x) mit dem Übergabewert x = 1 aus dem Menü auf. Warum funktioniert das Programm danach nicht mehr? und ich hab das Problem, wenn ich das Programm noch nicht im Menü eingebunden habe, läuft es auch so nicht. Der Compiler macht nix. ich weiß auch gar nicht, was ich mit x=1 machen soll. |
||||||||||
20.12.2013, 08:51 | Auf diesen Beitrag antworten » | ||||||||||
eulerscheZahl | - Du hast die Funktionen ins main kopiert, die müssen aber außerhalb stehen - Die Funktionen sollen sich gegenseitig aufrufen, dazu müssen sie sich kennen. 4_1 kennt aber 4_2 nicht, da 4_1 vor 4_2 implementiert wird. Abhilfe schafft, den Funktionskopf der anderen Funktion schon vorher hinzuschreiben.
Wenn du das aber ausführst, wird es abstürzen, weil: 4_1 ruft 4_2 auf. 4_2 ruft wiederum 4_1 auf. 4_1 ruft dann 4_2 auf. 4_2 ruft ... das gibt eine Endlosschleife. |
||||||||||
Anzeige | |||||||||||
|
|||||||||||
20.12.2013, 09:32 | Auf diesen Beitrag antworten » | ||||||||||
kim... | danke das habe ich jetzt soweit verstanden. und wie sorge ich dafür dass die endlosschleife aufhört? |
||||||||||
20.12.2013, 09:36 | Auf diesen Beitrag antworten » | ||||||||||
eulerscheZahl | Du rufst die jeweils andere Funktion auf, ohne etwas damit zu machen. Wozu brauchst du dann überhaupt den Aufruf? Ich würde die Zeile einfach entfernen. |
||||||||||
20.12.2013, 09:40 | Auf diesen Beitrag antworten » | ||||||||||
kim... | also funktioniert das Programm nicht mehr, weil wie du schon sagtest, eine endlosschleife entsteht? das wäre doch die antwort oder auf meine Aufgabenstellung? |
||||||||||
20.12.2013, 09:43 | Auf diesen Beitrag antworten » | ||||||||||
eulerscheZahl | Ja. |
||||||||||
20.12.2013, 09:44 | Auf diesen Beitrag antworten » | ||||||||||
kim... | vielen dank euch beiden |
|
Verwandte Themen
Die Beliebtesten » |
Die Größten » |
Die Neuesten » |