Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » frage zu den zeigern

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 <
000
20.01.2007, 11:52 Uhr
tobias
hmm....


Hallo, ich habe mir vor 1 Woche das c++ buch: C++ von A-Z gekauft, und habe zu den Zeigern eine Frage.

Also, in dem Buch kommen lauter Beispiele mit den Zeigern... Leider check ich diese Zeiger noch nicht so ganz, dafür das andere... Aber damit ich die ganzen Quellcodes auch komplett verstehe würde ich auch gerne die Zeiger verstehen..

Wenn man sowas macht:


C++:
void test(int* wert);

void test(int* wert)
{
  *wert = wert + 5;
}

int main(void)
{
   int wert = 25;
   test(wert);

   system("PAUSE");
   return 0;
}



Also wenn ich das so habe, dann müsste der die variable wert in der funktion main dann 30 sein? - Wenn ja, kann man das dann gleichsetzen wie in php wenn man sowas macht:


PHP 4:
<?php

function test(&$wert)
{
   $wert = $wert + 5;
}
$wert = 25;
test($wert);
?>



sehe ich das richtig, das man also mit dem zeiger bei einer funktion den wert der variablen auserhalb der funktion ändern kann... ohne zeiger erhält man ja eine kopie der variable welche nur in der funktion gültig ist...

bitte erklärt es mir falls das da oben falsch ist..

und wie sieht das aus mit der referenz? ist das lediglich um den STACK nicht zu überfordern?

Also in meinem Buch steht das der aha effekt mit den Zeigern später kommt, aber in jedem Beispiel werden diese Benutzt und ich würde gerne den ganzen quellcode verstehen...

Vielen Dank
--
Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.01.2007, 12:14 Uhr
derphilipder




C++:
*wert = *wert + 5;


wert ist der Zeiger, *wert ist der eigentliche Wert.
--
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
002
20.01.2007, 12:22 Uhr
Blubber2063



Da gehts nicht ums Überfordern, sondern 1. ist es manchmal nötig ein Objekt durch den Aufruf einer Methode zu verändern und 2. macht man das aus Effizienzgründen. Denn alles was nicht CallByReference übergeben wird, muss komlett auf den Stack kopiert werden und das kostet jede Menge Zeit.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.01.2007, 12:23 Uhr
tobias
hmm....


na ich habs jetzt verstanden wie das geht..

mit dem zeiger kann man auf eine adresse von einer variablen deuten und deren wert innerhalb einer funktion ändern.. (find ich persönlich doof) man könnte auch sowas machen:

wert = 5;

wert += test(); // rückgabewert der funktion (5) und wert ist dann 10... so könnte man sich einen zeiger sparen.. (aber das hat mit dem STACK zutun, das es zeiger gibt, oder? weil sonst die variable kopiert wird, odersowas und das platz verbraucht)
--
Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.01.2007, 12:25 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)



Zitat von tobias:
na ich habs jetzt verstanden wie das geht..

mit dem zeiger kann man auf eine adresse von einer variablen deuten und deren wert innerhalb einer funktion ändern.. (find ich persönlich doof) man könnte auch sowas machen:

wert = 5;

wert += test(); // rückgabewert der funktion (5) und wert ist dann 10... so könnte man sich einen zeiger sparen..

aha und was machst du wenn die Funktion mehere Werte ändern soll?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.01.2007, 12:27 Uhr
tobias
hmm....


ok stimmt auch wieder... sorry bin hier gerade nicht der hellste... ist etwas neues im gegensatz zu php, aber ich denke so langsam habe ich das mit den zeigern raus und kann mal mit den templates weitermachen..(die finde ich übrigens sehr leicht)
--
Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
20.01.2007, 12:27 Uhr
Blubber2063



Außerdem überlegst du dir das bei komplexen Datenstrukturen die nicht mit einem mal kopiert sind, doch zweimal ob du wirklich das ganze Objekt kopieren willst.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
20.01.2007, 12:49 Uhr
tobias
hmm....


^vielen dank, ihr habt mir sehr geholfen..
--
Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: