WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Call by Value, Call by Reference (http://www.wcm.at/forum/showthread.php?t=98287)

BigNfan 28.05.2003 10:26

Call by Value, Call by Reference
 
Hi!

Ich muss für die Matura ne 20seitige Ausarbeitung über 2 Themen haben.
Hab eigentlich schon alles. Nach Verbesserung durch den Lehrer fehlt nur die Übergabe von Call by Reference und Call by Value

Kann mir wer sagen wie man sowas übergibt ?

danke im voraus ;)

_m3 28.05.2003 10:40

Call bei reference:
Du übergibst einen Pointer auf eine Variable (die Original-Variable kann in der Subroutine verändert werden).

Call bei Value:
Du übergibst den Wert der Variable (die Variable selbst kann in der Subroutine nicht verändert werden).

IIRC. ;)

BigNfan 28.05.2003 10:44

hi

was ist ein pointer?

und mit welchen befehl übergebe ich das?

danke!

renew 28.05.2003 10:51

Ein Pointer ist ein Zeiger auf den Speicherbereich der Variable - das heißt du kannst dann direkt den Wert der Variable ändern.

Wei schon von _m3 geschrieben, hast halt by Value nur den Wert, aber nicht die Variable direkt.

Befehle: abhängig von der Programmiersprache.

In VB is eigentlich alles By Reference, außer du gibts in der Funktion/Prozedur ein ByVal vor die Variable.
In C ists der nette Stern nach der Variable - also Var*, um By Reference zu übergeben.
In C ist, soweit ich micht erinnere alles byVal, außer Strings, die sind by Reference und brauchen keinen *.
....

Hast in der Schul net aufpasst.... :D ;)

Who-T 28.05.2003 10:53

c/c++/alle sprachen die das unterstützden


bsp für call by value

Code:

int main (void)
{
  int a = 10;
 
  increase(a);
  printf ("%d", a);
}

void increase (int var)
{
  var ++;
}

ausgabe hier ist 10, da der wert von a kopiert wird, in increase nur der kopierte wert erhöht wird, der originale wert aber gleich bleibt

Code:

int main (void)
{
  int a = 10;
  increase (&a);
  printf ("%d", a);
}

void increase (int* var)
{

}


_m3 28.05.2003 10:53

Zitat:

Original geschrieben von BigNfan
hi

was ist ein pointer?

und mit welchen befehl übergebe ich das?

danke!

:eek: Bitte was hast Du auf den anderen 20 Seiten stehen, wenn Du nicht mal weist, was ein Pointer (auf Deutsch "Zeiger", aber das sollte ein Maturant wissen) ist ?????
Aaaaaaaaaaaaaaaaaaaaaaaaaaahhhhhh :eek: :ms:

This is not funy! :(

Wie Du call by reference oder value machst, hängt von der Programmiersprache ab, wie LLR schon geschrieben hat.

Who-T 28.05.2003 10:55

c/c++/alle sprachen die das unterstützden


bsp für call by value

Code:

int main (void)
{
  int a = 10;
 
  increase(a);
  printf ("%d", a);
}

void increase (int var)
{
  var ++;
}

ausgabe hier ist 10, da der wert von a kopiert wird, in increase nur der kopierte wert erhöht wird, der originale wert aber gleich bleibt

Code:

int main (void)
{
  int a = 10;
  increase (&a);
  printf ("%d", a);
}

void increase (int* var)
{
  (*var)++;
}

ausgabe is 11, da die adresse von a übergeben wird, in increase der wert an der übergebenen adresse erhöht wird -> call by reference.

int* var ist ein pointer auf den speicherbereich eines ints mit dem namen var.
sprich ein pointer zeigt immer auf einen speicherbereich eines bestimmten typs, der wert eines pointers ist nur die adresse, auf die er zeigt

BigNfan 28.05.2003 11:23

Zitat:

Original geschrieben von LLR
Ein Pointer ist ein Zeiger auf den Speicherbereich der Variable - das heißt du kannst dann direkt den Wert der Variable ändern.


In VB is eigentlich alles By Reference, außer du gibts in der Funktion/Prozedur ein ByVal vor die Variable.


thx

Who-T 28.05.2003 11:32

roots, löschst bitte den ersten beitrag von mir. war n doppelpost, hab mal zu schnell auf tab/leertaste gedrückt.

frazzz 28.05.2003 11:47

Zitat:

Original geschrieben von _m3
:eek: Bitte was hast Du auf den anderen 20 Seiten stehen, wenn Du nicht mal weist, was ein Pointer (auf Deutsch "Zeiger", aber das sollte ein Maturant wissen) ist ?????
Aaaaaaaaaaaaaaaaaaaaaaaaaaahhhhhh :eek: :ms:

This is not funy! :(

Wie Du call by reference oder value machst, hängt von der Programmiersprache ab, wie LLR schon geschrieben hat.


:ja:


verwundert mich auch etwas


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag