Fehler bei Array-Zuweisung! verstehe ich nicht!!



  • ich habe eine einfaches Code geschrieben, siehe u.

    unsigned char  imag[640][480], muster[10][10];
    .
    .
    muster[10][10]= { {1,2,3,4,5,6,7,8,9,10},
    		{1,2,3,4,5,6,7,8,9,10},
    		{1,2,3,4,5,6,7,8,9,10},
    		{1,2,3,4,5,6,7,8,9,10},
    		{1,2,3,4,5,6,7,8,9,10},
    		{1,2,3,4,5,6,7,8,9,10},
    		{1,2,3,4,5,6,7,8,9,10},
    		{1,2,3,4,5,6,7,8,9,10},
    		{1,2,3,4,5,6,7,8,9,10},
    		{1,2,3,4,5,6,7,8,9,10}};
    .
    .
    

    und die habe ich bei VC++ V6.0 compilieren lassen, und ich bekomme eine Fehlemeldung :

    error C2059: syntax error : '{'
    

    verstehe ich nicht!! Und ich habe von andere Quelle eine ähnlich Code hier copiert,

    unsigned char  imag[640][480], muster[10][10];
    unsigned char Matrix[4][5] = { {10,20,30,40,50},
                         {15,25,35,45,55},
                         {20,30,40,50,60},
                         {25,35,45,55,65}};
    
    muster[10][10]= {   {1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10}};
    

    die erste Zuweisung ist fehlefrei, aber die Fehlermeldung bekomme ich immer für die Stelle

    muster[10][10]= {..
    

    was habe ich falsch gemacht? hat es mit die Inhalt zu tun?



  • Das erste ist keine Zuweisung, sondern eine Initialisierung. Du kannst Arrays nichts zuweisen.



  • Ohje!!

    unsigned char muster[10][10] = {   {1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10}};
    

    so ist richitg! habe ich noch mal im Bücher nachgeschaut. Ich habe immer vorgestellt, dass die Arrays genau gleich wie Variable sind! doch nicht gleich! aber siehe u.

    unsigned char muster[10][10];
    
    muster[3][5]=8;
    

    ist oben eine ZUweisung? ist es deswegen, dass ich mit obere Code keine Fehlermeldung bekommen habe?



  • Hallo,

    noch einmal zur Verdeutlichung:

    das hier:

    gy100002000 schrieb:

    unsigned char muster[10][10] = {   {1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10},
    						{1,2,3,4,5,6,7,8,9,10}};
    

    ist eine Initialisierung, und keine Zuweisung, auch wenn hier das "="-Zeichen vorkommt, das ist ok. Wurde die Variable aber schon definiert, ohne sie zu initialisieren:

    gy100002000 schrieb:

    aber siehe u.

    unsigned char muster[10][10];
    

    dann nennt man eine Anweisung der Form:

    muster[10][10] = ...
    

    Zuweisung, und kann mehreren Elementen mit dieser Schreibweise:

    {   {1,2,3,4,5,6,7,8,9,10}, ... }
    

    die nur bei Definition der Variablen erlaubt ist, nicht mehr so Werte zuordnen, wie in dieser Zuweisung:

    muster[3][5]=8;
    

    in der nur ein Array-Element einen Wert bekommt.

    MfG,

    Probe-Nutzer


Anmelden zum Antworten