如何初始化无符号字符数组?

4
我真正想要实现的是一个动态字节数组模式的数组,当我缓冲二进制文件时,我可以使用它作为模式搜索器。但现在我先从基础开始。我有以下代码,它是基于在StackOverflow上找到的示例。

如何在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]

我不理解这个警告的本质。我该如何解决它?谢谢。
1个回答

6

BYTE *p[2][4]中的*删除:

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

你希望得到一个多维的char数组: BYTE p[2][4],而不是一个多维的char指针数组。

哇,那个修复真的很容易。我很好奇,为什么您要删除指针,当我链接的示例中使用指针来执行与我所需非常相似的操作? - redsolar
@redsolar 在那段代码中,最内层的元素本身就是一个数组(“00”)。 - cnicutar
哦,我现在明白了。感谢您澄清并感谢您的回答。非常感谢。 - redsolar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接