WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 28.05.2003, 10:26   #1
BigNfan
Inventar
 
Registriert seit: 06.01.2000
Alter: 43
Beiträge: 2.232


Standard 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
____________________________________
20x Die Ärzte LIVE@2008
Moskau, Prag, Eupen, 6x Berlin etc.
BigNfan ist offline   Mit Zitat antworten
Alt 28.05.2003, 10:40   #2
_m3
Inventar
 
Registriert seit: 24.09.2001
Beiträge: 7.335


Standard

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.
____________________________________
Weiterhin zu finden auf http://martin.leyrer.priv.at , http://twitter.com/leyrer , http://www.debattierclub.net/ , http://www.tratschen.at/ und via Instant Messaging auf Jabber: m3 <ät> cargal.org .
_m3 ist offline   Mit Zitat antworten
Alt 28.05.2003, 10:44   #3
BigNfan
Inventar
 
Registriert seit: 06.01.2000
Alter: 43
Beiträge: 2.232


Standard

hi

was ist ein pointer?

und mit welchen befehl übergebe ich das?

danke!
____________________________________
20x Die Ärzte LIVE@2008
Moskau, Prag, Eupen, 6x Berlin etc.
BigNfan ist offline   Mit Zitat antworten
Alt 28.05.2003, 10:51   #4
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

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....
renew ist offline   Mit Zitat antworten
Alt 28.05.2003, 10:53   #5
Who-T
Elite
 
Registriert seit: 01.08.2000
Beiträge: 1.395


Who-T eine Nachricht über ICQ schicken
Standard

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)
{

}
____________________________________
Whoever built humanity left in a major design flaw: it was the tendency to bend at the knees.
Who-T ist offline   Mit Zitat antworten
Alt 28.05.2003, 10:53   #6
_m3
Inventar
 
Registriert seit: 24.09.2001
Beiträge: 7.335


Standard

Zitat:
Original geschrieben von BigNfan
hi

was ist ein pointer?

und mit welchen befehl übergebe ich das?

danke!
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

This is not funy!

Wie Du call by reference oder value machst, hängt von der Programmiersprache ab, wie LLR schon geschrieben hat.
____________________________________
Weiterhin zu finden auf http://martin.leyrer.priv.at , http://twitter.com/leyrer , http://www.debattierclub.net/ , http://www.tratschen.at/ und via Instant Messaging auf Jabber: m3 <ät> cargal.org .
_m3 ist offline   Mit Zitat antworten
Alt 28.05.2003, 10:55   #7
Who-T
Elite
 
Registriert seit: 01.08.2000
Beiträge: 1.395


Who-T eine Nachricht über ICQ schicken
Standard

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
____________________________________
Whoever built humanity left in a major design flaw: it was the tendency to bend at the knees.
Who-T ist offline   Mit Zitat antworten
Alt 28.05.2003, 11:23   #8
BigNfan
Inventar
 
Registriert seit: 06.01.2000
Alter: 43
Beiträge: 2.232


Standard

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
____________________________________
20x Die Ärzte LIVE@2008
Moskau, Prag, Eupen, 6x Berlin etc.
BigNfan ist offline   Mit Zitat antworten
Alt 28.05.2003, 11:32   #9
Who-T
Elite
 
Registriert seit: 01.08.2000
Beiträge: 1.395


Who-T eine Nachricht über ICQ schicken
Standard

roots, löschst bitte den ersten beitrag von mir. war n doppelpost, hab mal zu schnell auf tab/leertaste gedrückt.
____________________________________
Whoever built humanity left in a major design flaw: it was the tendency to bend at the knees.
Who-T ist offline   Mit Zitat antworten
Alt 28.05.2003, 11:47   #10
frazzz
Inventar
 
Registriert seit: 11.01.2003
Beiträge: 5.292


Standard

Zitat:
Original geschrieben von _m3
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

This is not funy!

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




verwundert mich auch etwas
____________________________________
pssst

tanj


frazzz ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:22 Uhr.


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