我想初始化一个16字节的十六进制值数组,特别是0x20(空格字符)值。
正确的方法是什么?
unsigned char a[16] = {0x20};
或
unsigned char a[16] = {"0x20"};
由于
答案 0 :(得分:4)
答案 1 :(得分:3)
定义此项,例如
unsigned char a[16] = {0x20, 0x41, 0x42, };
将如前所示初始化前三个元素,将剩余元素初始化为0
。
你的第二种方式
unsigned char a[16] = {"0x20"};
将不会执行您想要的操作:它只定义一个带有四个字符0x20
的以空字符结尾的字符串,编译器不会将其视为十六进制值。
答案 2 :(得分:3)
第一种方法是正确的,但你需要重复0x20,
十六次。你也可以这样做:
unsigned char a[16] = " ";
答案 3 :(得分:2)
unsigned char a[16] = {0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20};
或
unsigned char a[16] = "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20";
答案 4 :(得分:1)
我不知道这是否是您要找的,但是如果要更改给定阵列的大小(经常或不经常),为了便于维护,您可以考虑基于的以下方法memset()
#include <string.h>
#define NUM_OF_CHARS 16
int main()
{
unsigned char a[NUM_OF_CHARS];
// initialization of the array a with 0x20 for any value of NUM_OF_CHARS
memset(a, 0x20, sizeof(a));
....
}
答案 5 :(得分:0)
我会使用memset
。
无需键入任何内容,并且数组的大小在初始化时仅提供一次。
#include <string.h>
int main(void)
{
unsigned char b[16];
memset(b, 0x20, sizeof(b));
}