2016-03-19 10 views
-6
#include <stdio.h> 

int main() 

{ 

int a[5]; 

int i; 

    for (i=0; i<5; i++) 
     a = i; 
    for (i=0; i<5; i++) 
     printf("a[%d] = %d\n", i, a); 
} 
+0

Was genau nicht funktioniert? Bitte lesen Sie [eine gute Frage]. –

+1

Zum einen macht die Zuweisung a = i; keinen Sinn. Du willst wahrscheinlich 'a [i] = i; '. Ähnlich sollte "a" beim Ausdrucken "a [i]" sein. Dann wird es funktionieren. Außerdem scheint es, dass Sie kein Verständnis für C haben und versuchen, Hilfe zu bekommen, wenn Sie Code, den Sie online gefunden haben, debuggen. Ich schlage vor, mindestens die Grundlagen von C zu lernen, bevor ich versuche, Hilfe mit einem bestimmten Programm zu bekommen. –

Antwort

0

Sie erklären a ein Array von ganzen Zahlen zu sein - und stattdessen ein Element des Arrays für den Zugriff auf a[i] Sie a direkt zugreifen, die nur die Adresse des ersten Elements des Arrays Speicher hält. Sie modifizieren also Speicheradressen grundsätzlich direkt, was fast nie eine gute Idee ist.

+1

Nein, 'a' * selbst * enthält nicht die Speicheradresse, aber 'a' wird * in die Adresse konvertiert *. * Arrays sind keine Zeiger. * – MikeCAT

1

Arrays, die als Operand von Operatoren außer sizeof und unary & verwendet werden, werden automatisch in einen Zeiger konvertiert, der auf das erste Element des Arrays zeigt. Der konvertierte Zeiger ist kein Lvalue und kann daher nicht als linker Operand des Zuweisungsoperators verwendet werden.

Dieser Code funktioniert.

#include <stdio.h> 

int main(void) 
{ 
    int a[5]; 
    int i; 

    for (i=0; i<5; i++) 
     a[i] = i; 
    for (i=0; i<5; i++) 
     printf("a[%d] = %d\n", i, a[i]); 
    return 0; 
} 
-1

yu haben Fehler in a = i, sollte ein [i] = i: int main()

{ 

int a[5]; 

int i; 

for (i=0; i<5; i++) 
    a[i] = i; 
for (i=0; i<5; i++) 
    printf("a[%d] = %d\n", i, a[i]); 
} 
+1

Sie haben * undefiniertes Verhalten * aufgerufen, indem Sie Daten mit falschem Typ an 'printf()' übergeben: '% d' ruft' int' auf, aber 'a' wird in' int * 'umgewandelt. – MikeCAT

Verwandte Themen