2014-06-05 8 views
-4

Je souhaite manipuler des données dans un tableau 2D sur une ligne entière à la fois; quelque chose comme ceci:Manipulation de données dans un tableau 2D

{ 
uint8 2d_Array[5][4] = {0}; 

2d_Array[0][4] = {0x12, 0x3E, 0x32}; // <-- Error here. 
2d_Array[1][4] = {0x5F, 0x17, 0xE4}; 
... 
} 

Cependant, le code ci-dessus donne une erreur: Expected expression before '{'.

Est-ce que quelque chose de similaire à ce qui est possible en C?

Répondre

1

Pour initialiser un tableau 2D:

uint8 2d_Array[5][4] = 
    { 
     {0x12, 0x3E, 0x32, 0}, // 2d_Array[0][0-3] 
     {0x5F, 0x17, 0xE4, 0}, // 2d_Array[1][0-3] 
     ... 
     {0, 0, 0, 0}    // 2d_Array[4][0-3] 
    }; 

Ou, peut-être:

memcpy(2d_array[0], "\x12\x3E\x32", 3); 
    memcpy(2d_array[1], "\x5F\x17\xE4", 3); 

Ou, peut-être (si vous voulez copier aussi un '\ 0' à la fin de chacun):

memcpy(2d_array[0], "\x12\x3E\x32", 4); 
    memcpy(2d_array[1], "\x5F\x17\xE4", 4); 
+0

Oui, ce que je sais, mais je veux l'utiliser un par un en fonction de mon application – user3665714

0
2d_Array[0][4] = {0x12, 0x3E, 0x32}; 

D'un côté vous avez un uint8 et de l'autre un tableau de uint8. Cela ne peut pas fonctionner!

0

Vous pouvez utiliser le formulaire

<array> = {0x12, 0x3E, 0x32}; 

uniquement pour initialiser un tableau. Pour définir les éléments du tableau, vous devez les définir un par un.

2d_Array[0][1] = 0x12; 
2d_Array[0][2] = 0x3E; 
2d_Array[0][3] = 0x32; 

etc.

PS Vous ne pouvez pas avoir un nom de variable qui commence par 2.

+0

Oui, je le sais, mais je veux utiliser un par un selon ma demande. – user3665714

+0

@ user3665714 super, mais * les tableaux ne sont pas autorisés comme valeurs l dans C *. Ils peuvent être initialisés comme indiqué ici. Sinon, vous êtes en train de boucler les éléments et de boucler, "memcpy" si vous êtes vraiment créatif. – WhozCraig

0

la première erreur de votre programme est le nom de la variable = 2d_ArrayLe premier caractère doit être un alphabet ou un trait de soulignement. Refer

Initialiser/stockage de valeurs dans un tableau à deux dimensions

uint8 2d_Array[5][4] = {0};   //This initializes all the elements of array to 0 
2d_Array[0][4] = 0x12;     // Assigns value 0x12 to the element in of 0th row & 4th column 

Et l'initialisation suivante est faux,

Tableau 1 = {0x5F, 0x17, 0xE4};

Une rangée d'un tableau peut être initialisé en utilisant la méthode ci-dessus tout en déclarant que le tableau que

uint8 Array[5][4]={ {0} 
         {0x12, 0x3E, 0x32} 
         {0x5F, 0x17, 0xE4} 
        };