2014-06-05 102 views
-4

我想一次處理整行的二維數組中的數據;是這樣的:在二維數組中處理數據

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

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

然而,上面的代碼提供了一個錯誤:Expected expression before '{'

在C中是否類似於上面的可能?

回答

1

要初始化一個二維數組:

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] 
    }; 

或者,也許:

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

或者,也許(如果你也想在每個月底複製 '\ 0'):

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

是的,這個我知道,但我想根據我的應用程序一一使用它 – user3665714

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

一方面你有一個uint8,另一方面是一個uint8數組。這是行不通的!

0

可以使用的形式

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

只初始化數組。要設置數組的元素,您必須逐個設置它們。

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

PS你不能與2開頭的變量名。

+0

是的,這個我知道上面的方法進行初始化,但我想根據我的應用程序中使用一個接一個。 – user3665714

+0

@ user3665714很好,但*數組不允許作爲C *中的左值。它們可以如此處所示進行初始化。否則你就是元素和循環,如果你真的*創造性的話就是'memcpy'。 – WhozCraig

0

第一錯誤你的程序是變量名 = 2d_Array 第一個字符應該是字母或下劃線Refer

初始化/在二維陣列

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 

存儲的值和下面的初始化是錯誤的,

陣列1 = {0x5F的,0×17,0xE4};

陣列的行可僅使用,同時聲明數組作爲

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