今天在为一个结构体的unsigned char数组赋十六进制形式表示的字符时遇到问题了,如下:
typedef struct
{
int bits;
unsigned char x[2];
unsigned char y[2];
}KEY;
当需要定义并初始化一个实例时,其中的数组x,y均赋值为十六进制形式表示的字符,如0xFF,0xFE,可采用如下的赋值语句:
KEY key_1 = {16, {0xA1,0xF2}, {0xB1,0x32} };//right
KEY key_2 = {16, "0xA1,0xF2", "0xB1,0x32" };// wrong 这样数组会把0x和","单独解释成一个元素,无法实现把“A1”当成一个元素。
KEY key_3 = {16, "'0xA1','0xF2'", "'0xB1','0x32'" };// wrong
KEY key_4 = {16, "0xA1F2", "0xB132" };// wrong 这样数组会把0x也解释成一个元素,从而会造成数组的溢出。