如何初始化一个无符号字符数组? [英] How to initialize a unsigned char array?

查看:41
本文介绍了如何初始化一个无符号字符数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我真正想要实现的是一个动态字节模式数组,当我缓冲二进制文件时,我可以将其用作模式搜索器.但我现在从基本开始.我根据 StackOverflow 上的一个示例编写了以下代码.

What I am really trying to achieve is an array of dynamic byte patterns that I can use as a pattern searcher when I buffer binary files. But I am starting off basic for now. I have the following code that I based off of an example found on StackOverflow.

如何在 C 中初始化多维字符数组?

typedef unsigned char BYTE;

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

    return 0;
}

我用 mingw32 for Windows 编译它.

I compile it with mingw32 for Windows.

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

当我尝试编译时收到以下警告.

I get the following warnings when I try to compile.

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]

我不明白这个警告的性质.我该如何解决?谢谢.

I don't understand the nature of this warning. How do I go about resolving it? Thanks.

推荐答案

Drop the * from BYTE *p[2][4]:

Drop the * from BYTE *p[2][4]:

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

你想要一个 char 的多维数组:BYTE p[2][4] 而不是 pointer-to-char 的多维数组.

You want a multidimensional array of char: BYTE p[2][4] not a multidimensional array of pointer-to-char.

这篇关于如何初始化一个无符号字符数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆