Erklärung des (simplen) codes

Gast #3994668
Lesenswert?
• ▲
▼
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.
Gast #3994704
Lesenswert?
• ▲
▼
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.
Gast #3994707
Lesenswert?
• ▲
▼
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.
Gast #3994714
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren