Moin,
* Daniel Feist
Die Adresse von 'i' wird ja einfach willkürlich vom Computer festgelegt. Wenn ich das richtig verstanden habe, wird durch &(Adressoperator) die Adresse festgelegt!
Der Audruck 'i' hat einen bestimmten Wert. Beispiel: int i = 0; Jetzt hat der Audruck 'i' den Wert '0'. Der Ausdruck '&i' hat ebenfalls einen Wert, nämlich den Wert 'Adresse, an der die Variable i gespeichert ist'. Der Funktion übergibst Du den Ausdruck, also in meinem Beispiel entweder '0' oder 'Adresse, an der ...'. Mit dem ersten Wert kann die Funktion nichts anfangen, weil sie einen Platz braucht, an den das Ergebnis geschrieben werden soll.
Man kann sich das so vorstellen: i uebergibt einer Funktion die Zahl,&i uebergibt einen Zettel, auf der die Zahl draufsteht. Wenn Du einen Zettel uebergibst, kann die Funktion einen Radiergummi nehmen und was anderen auf den Zettel schreiben. Dann hat das Hauptprogramm, wo die Funktion aufgerufen wird, den anderen Wert in i stehen. Wenn Du aber nur i uebergibst, kann i nicht veraendert werden. printf() muss nichts veraendern, es braucht einfach nur den Wert.
printf("%d\n", 5); geht, es wird einfach 5 ausgegeben. scanf("%d", 5) geht nicht, wie soll 5 denn veraendert werden. &5 geht natuerlich auch nicht, weil man von einer Zahlenkonstante keine Adresse uebergeben kann.
Hä?!? Wie 'i' übergibt einer Funktion die Zahl,... das ist mir nicht klar!
Siehe oben, der Ausdruck 'i' hat den Wert 5 oder 0 oder einen anderen Integer. Dieser Wert wird übergeben.
Trotzdem rate ich Dir dringend, ein gutes C-Buch zu kaufen, in dem sowas erklaert wird.
Ich lese ja momentan auf www.pronix.de eine Einführung in C - Aber ich werde mir sowiso ein Buch kaufen - kennst du ein gute?
Ich hatte einen guten Lehrer, aber im Allgemeinen wird das Original von Kernighan und Ritchie empfohlen. Thorsten -- I say, if your knees aren't green by the end of the day, you ought to seriously re-examine your life. - Calvin