Hallo, ich habe eine Frage zur Lösung dieser Aufgabe: // AUFGABE 6: Ein Integervektor wurde folgendermaßen deklariert: int zahl[3];. Der zweiten Komponente dieses Vektors soll der Wert 2015 zugewiesen werden. // Wielautet die zugehörige Anweisung? // Lösung AUFGABE6: // #include <stdio.h> // //void main(void) //{ // int zahl[3]={0}; // zahl[1]=2003; // printf("%d %d %d",zahl[0],zahl[1],zahl[2]); //} Kann mir bitte jemand erklären, wieso die Lösung so ist? Diese habe ich leider nicht verstanden. Wieso zahl[1]=2003 ? und wieso das ={0} bei zahl[3]? Vielen Dank im Vorraus.
Hallo, Sven schrieb: > Wieso zahl[1]=2003 ? Ich vermute mal das ist ein Schreibfehler und soll 2003 sein. > und wieso das ={0} bei Das Setzt den ganzen Vektor bzw. Array auf 0. Viele Grüße Michael
Michael Mayer schrieb: >> Wieso zahl[1]=2003 ? > Ich vermute mal das ist ein Schreibfehler und soll 2003 sein. :-) Mein Vorredner meinte wohl: ..soll 2015 sein
Aber mal von ganz vorn: Bei Vektoren begginngt man bei 0 zu zählen, d.h. dein erstes Element ist dann: zahl[0] folglich dein zweites Element: zahl[1] diesem weist man den Wert zu: zahl[1] = 2015
Michael Mayer schrieb: >> Wieso zahl[1]=2003 ? > Ich vermute mal das ist ein Schreibfehler und soll 2003 sein. Danke für deine Antwort, Michael. Diesen Teil habe ich nicht verstanden. müsste es nicht heißen: int zahl[3]={0}; int zahl[1]={2015}; ?
Das ist ein array von drei Elementen. int zahl[1] kann jeden Wert annehmen. das hier ist die inizialisierung. // int zahl[3]={0}; aber es sollte so aussehen int zahl[3]={0,0,0}; // alle auf 0 gesetzt.
Sven schrieb: > müsste es nicht heißen: > > int zahl[3]={0}; > int zahl[1]={2015}; Nein, denn so definierst du ja zwei Arrays mit dem gleichen Namen. Die 3 ist ja hierbei nicht der Index, sondern die Größe des Arrays. Wenn du es dann benutzt zahl[1]=2015; ist der Wert in den eckigen Klammern der Index (in diesem Fall 0 bis 2). Die eckigen Klammern haben also bei der Definition und beim Zugriff eine unterschiedliche Bedeutung.
Nein, das
1 | int zahl[3]={0}; |
heisst soviel wie
1 | int zahl[3]; |
2 | zahl[0] = 0; |
3 | zahl[1] = 0; |
4 | zahl[2] = 0; |
Da ist nur eine verkürzte Schreibweise. stell dir
1 | zahl[1] |
als eine normale integer-Variable vor. Da machst du die zuweisung ja auch ohne geschweifte klammern.
Die erste Zeile definiert ein Array mit 3 Speicherzellen und setzt diese alle auf 0. Die zweite Zeile (ohne Klammern) ist eine Zuweisung die sich nur auf das zweite Element bezieht. Gruß Dennis P.S.: "Icke" war schneller und hat es noch schöner beschrieben.. ;-)
:
Bearbeitet durch User
Allgemein sind zu unterscheiden: Typ Name = Wert; // Definition einer Variblen mit Initialisierung Name = Wert; // Zuweisung Bei der Definition wird eine neue Variable angelegt, bei der Zuweisung nur einer schon existierenden ein neuer Wert gegeben.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.