我看了一遍这个链接(如何初始化一个无符号字符数组?),但它并没有完全回答我的问题。
我知道我可以像这样创建一个字符串数组:
const char *str[] =
{
"first",
"second",
"third",
"fourth"
};
如果我想要写()这些内容,可以使用:write(fd, str[3], sizeof(str[3]));
但是如果我需要一个长度可变的无符号字符数组怎么办?我尝试了这个方法:
const unsigned char *cmd[] =
{
{0xfe, 0x58},
{0xfe, 0x51},
{0xfe, 0x7c, 0x01, 0x02, 0x00, 0x23},
{0xfe, 0x3d, 0x02, 0x0f}
};
我得到了像下面这样的gcc编译警告: * "标量初始化器周围有大括号" * "初始化会将整数转换为指针"
write(fd, str[3], strlen(str[3]));
。应该使用strlen
而不是sizeof
。对指针使用sizeof
只会返回指针本身的大小,而不是它所指向的数据的大小。 - johnstr
是指针数组,而非长度可变的数组。使用字符串字面量初始化指针是可以的。没有数组字面量,也不能使用大括号列表来初始化指针。 - n. m.