habe ich das richtig verstanden. zeiger werden nur in funktionen bevorzugt.wenn ich als parameter die adresse übergebe nimmt er auch sicher diesen wert bzw. wenn ich später im programm eine variable vom ergebnis dieser funktion brauche kann ich nur über die adresse an den inhalt gelangen
äh nein nicht so ganz... das was du beim funktionsaufruf übergibts wird auf den stack kopiert... dann kannst du damit innerhalb der funktion arbeiten und wenn die funktion zuende ist wird es wieder gelöscht...
das heisst wenn du eine variale x übergibst wird hiervon eine kopie angefertig mit der du innerhalb der funktion arbeitest... wenn du den wert von x innerhalb der funktion veränderst, änderst du dementsprechend nicht x selber sondern nur die automatisch angelegte kopie die beim verlassen wieder zerstört wird...
um also auf x selber verändern zu können kannst du z.b. eine zeiger übergeben... dann wird der zeiger kopiert und nicht x selber... wenn du das modifizierst worauf der zeiger zeigt wird damit direkt x modifiziert....
deshalb musst du auch bei scanf die adresse übergeben der variablen in die der wert geschrieben werden soll und nicht die variable selber da intern sonst nur mit einer kopie gearbeitet werden würde die dann nach dem durchlauf von scanf nicht mehr existieren würde und somit in der von dir gewünschten variable der wert nicht stehen würde... bei printf hingegen kannst du den wert direkt übergeben da diese den wert ja nicht verändert sondern direkt ausgibt... da spielt es also keine rolle das er kopiert wird... -- ...fleißig wie zwei Weißbrote
das zweite wäre nehme ich an besser weil es über zeiger geht. aber in einem buch wurde die erste funktion verwendet. wieso wurde im buch die erste bevorzugtDieser Post wurde am 15.01.2005 um 16:51 Uhr von Pablo editiert.
@gast: ich weiß nicht, wie oft dir gesagt werden muss, dass du die verdammten cpp Tags selber benutzen sollst. Halte dich an den Regeln! -- A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath, Gilthoniel, A! Elbereth!
@gast cpp tags stehen gleich links neben dem feld in dem du deine antwort postest... einfach raufklicken... oder du registrierst dich dann kannst du auch deine beiträge editieren...
zu deiner frage... wie genau hast du daten definiert... (und ist es in beiden fällen gleich definiert?) -- ...fleißig wie zwei Weißbrote
also wenn du scanf mit %s aufrufst heisst das das du an die stelle auf die die adresse zeigt die du übergibst ein char-array (string) schreibst...
in mindestens einem fall ist das totaler murks den du da gemacht hast hängt halt davon ab wie du daten definiert hast..., also welchen types daten ist (ich vermute mal int wird es nicht sein ) -- ...fleißig wie zwei WeißbroteDieser Post wurde am 15.01.2005 um 18:08 Uhr von Windalf editiert.