2012-02-19 45 views
3

我真正想要實現的是一個動態字節模式數組,我可以在緩衝二進制文件時用作模式搜索器。但我現在開始基本了。我有以下基於StackOverflow上找到的示例的代碼。如何初始化一個unsigned char數組?

How to Initialize a Multidimensional Char Array in C?

typedef unsigned char BYTE; 

int main() 
{ 
    BYTE *p[2][4] = { 
     {0x44,0x58,0x54,0x31}, 
     {0x44,0x58,0x54,0x00} 
    }; 

    return 0; 
} 

我的mingw32爲Windows編譯。

D:\> gcc example.c -o example.exe 

當我嘗試編譯時,出現以下警告。

example.c: In function 'main': 
example.c:6:3: warning: initialization makes pointer from integer without a cast [enabled by default] 
example.c:6:3: warning: (near initialization for 'p[0][0]') [enabled by default] 
example.c:6:3: warning: initialization makes pointer from integer without a cast [enabled by default] 
example.c:6:3: warning: (near initialization for 'p[0][1]') [enabled by default] 
example.c:6:3: warning: initialization makes pointer from integer without a cast [enabled by default] 
example.c:6:3: warning: (near initialization for 'p[0][2]') [enabled by default] 
example.c:6:3: warning: initialization makes pointer from integer without a cast [enabled by default] 
example.c:6:3: warning: (near initialization for 'p[0][3]') [enabled by default] 
example.c:7:3: warning: initialization makes pointer from integer without a cast [enabled by default] 
example.c:7:3: warning: (near initialization for 'p[1][0]') [enabled by default] 
example.c:7:3: warning: initialization makes pointer from integer without a cast [enabled by default] 
example.c:7:3: warning: (near initialization for 'p[1][1]') [enabled by default] 
example.c:7:3: warning: initialization makes pointer from integer without a cast [enabled by default] 
example.c:7:3: warning: (near initialization for 'p[1][2]') [enabled by default] 

我不明白這個警告的性質。我該如何解決它?謝謝。

回答

5

*BYTE *p[2][4]

BYTE p[2][4] = { 
    {0x44,0x58,0x54,0x31}, 
    {0x44,0x58,0x54,0x00} 
}; 

你想要的char多維數組:BYTE p[2][4]不是pointer-to-char多維數組。

+0

哇。這是一個簡單的解決方案。我很好奇。爲什麼當我鏈接的例子使用了一個與我所尋找的東西非常相似的指針時,你放棄了指針? – redsolar 2012-02-19 18:51:46

+0

@redsolar在該代碼中,最內層的元素本身就是一個數組(「00」)。 – cnicutar 2012-02-19 18:54:10

+0

哦。我現在明白了。感謝您清理這個問題,並感謝您的回答。非常感激。 – redsolar 2012-02-19 18:56:07