您好我在这里有两个问题
如何在缓冲区中存储十六进制值,例如0x0a和0x1F;
char buffer[2] = "0x0a 0x1F";
但这不是正确的方法,它给出了大小10而不是2.任何人都可以建议我如何继续。
我见过像这样的数组
char buffer[] = " static array";
在结构中,
struct Point {
char x[];
char y[];
};
这是什么意思?编制需要多少大小 答案 0 :(得分:5)
首先,假设您确实需要一个双字节数组而不是三字节字符串(包括NULL终止符),您可以使用:
char buffer[] = {0x0a, 0x1f};
对于第二种,最简单的方法是简单地检查:
sizeof(buffer)
或:
sizeof(struct Point)
虽然我很确定你的结构定义会失败,因为char x[]
不是一个完整的类型。该标准的当前版本允许在结构的 end 处使用灵活的阵列大小,但不是您在那里的方式。
两者的可能大小(一旦你用struct Point
声明char x[5]
)将是14(" static array"
中的字符数,包括NULL终止符)和5({{{}的大小1}}本身(灵活的数组成员倾向于不占用空间,例如,如果通过x
获得内存块,它们更多地允许任意额外空间。)