Frage von Nunzio24, 20

C-Programm Zuweisung?

Hey Leute,

Ich soll ein kleines Programm schreiben :

include

int main() { int a=1, b=2, c=a+b; printf("Hier ist die Zahl %i",&a); printf("Hier ist die Zahl %i",&b); printf("Hier ist die Zahl %i",&c);

return 0;

}

so siehts aus, bei mir kommen aber nur riesige zahlen raus, ich kann das nicht nachvollziehen. Weiß jemand einen Tipp?

LG

Antwort
von TeeTier, 15

Da die anderen dich schon auf den Adressoperator hingewiesen haben, gehe ich da jetzt nicht weiter drauf ein.

Aber eine wichtige Kleinigkeit:

In deinem kurzen Programm gibt es keinen einzigen Zuweisungsoperator! Es gibt aber drei Initialisierungsoperatoren! Das verwechseln viele Leute, da beide mit einem Gleichheitszeichen dargestellt werden, aber intern machen beide völlig unterschiedliche Dinge.

Allerdings kommt man mit solchen Feinheiten - zugegeben - bei C weniger als bei C++, bei Low-Level-Programmierung oder beim Compiler-Design in Berührung.

Trotzdem sollte man immer im Hinterkopf behalten, dass es dabei einen gewaltigen Unterschied gibt! Besonders im Hinblick auf statische oder globale Variablen. Oder beim Unterschied zwischen Zeigern und Arrays, was häufig gerade für Einsteiger verwirrend ist.

Ohne jetzt den Rahmen sprengen zu wollen, ein kurzes abschließendes Beispiel:

int i = 0; // Initialisierung
i = 0; // Zuweisung

Ein ähnliches Problem ist der Unterschied zwischen "Deklaration" und "Definition", aber das wird jetzt zu viel ...

Behalte einfach immer im Hinterkopf, dass "da noch irgendwas war", wenn du später mal etwas fortgeschrittenere Lektüre zum Thema C liest.

Viel Spaß und einen schönen Abend noch! :)

Kommentar von Omnivore05 ,

Tolle Antwort!

Antwort
von Omnivore05, 20

Schon logisch wenn du du &a und &b ausgibst. Damit gibst du die Adresse der Vars aus. Mach die &'s weg

Antwort
von RakonDark, 16

das ist die speicheradresse

aus dem Wiki https://de.wikibooks.org/wiki/C-Programmierung:_Zeiger

Eine Variable kann in C auch direkt über die Adresse angesprochen werden. Eine Adresse liefert der &-Operator (auch als Adressoperator bezeichnet). Diesen Adressoperator kennen Sie bereits von der scanf-Anweisung:

 scanf("%i", &a);

Wo diese Variable abgelegt wurde, lässt sich mit einer printf Anweisung herausfinden:

 printf("%p\n", &a); 

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten