2012-07-27 63 views
1

我是程序員的初學者。我沒有理解爲什麼不能將一些腳本從數組複製到另一個腳本。使用陣列的Win32 API

char array1[11]; 
char array2[2]; 
array1 = {'255 105 85'}; 
array2[0] = array1[0]; 
array2[1] = array1[1]; 
array2[2] = array1[2]; 

MessageBox(hwnd,array2,"mes",NULL); 

我得到的是「5」而不是「255」。 我使用code :: blocks與GCC編譯器。該項目創建與Win32框架爲基礎。 有人知道是什麼原因導致問題?

回答

1

下面的結構是不允許在C:

array1 = {'255 105 85'}; 

相反,你可以考慮使用靜態數組的初始化是這樣的:

char array1[11] = {255, 105, 85}; 

這將填補陣列1與3個指定的值,並留下所有其他元素設置爲0(即以索引3開始並以索引10結束的元素)。

這是相當驚人的,爲什麼編譯器沒有你的情況告知語法錯誤

更新: 也請注意,你與個別人物操縱,當你有這樣的陣列1的表達[2 ]。如果你想操作字符串(即對您所指定的數量3個獨立的字符串),你將不得不聲明是這樣的:

char *array1[3] = { 
     "255", 
     "105", 
     "85" 
    }; 

    char *array2[3]; 

    array2[0] = array1[0]; 
    array2[1] = array1[1]; 
    array2[2] = array1[2]; 

因此,你將有一個字符串數組。 array1的每個條目將包含字符串「255」所在的存儲器的指針(地址)(請注意「255」是包含4個字符的數組:'2','5','5','\ 0 「)。

0

數組1應聲明如下:

char array1[] = {0x255, 0x105, 0x85};

單引號是在ASCII字符單,像'a''6''!'

而且,數組2是長度爲2的,但你將值分配給所述第三值(array2[2])。這可能是一個錯誤。