【发布时间】:2012-09-15 12:11:07
【问题描述】:
我有一个这样的字符串数组
char *T[] = {"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"};
但是,当我这样做时,每个字符串都是一个无符号字符数组
unsigned char *T[] = {"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"};
我收到错误消息“使用 'char[5]' 类型的表达式初始化 'unsigned char *' 在指向具有不同符号的整数类型的指针之间转换。”我猜这意味着正在使用的“0”和“1”的一些表示已签名,但我不确定为什么/如何处理它。我想要一个字符串数组,其中每个字符串都是一个无符号字符数组,而不是有符号字符数组。有人可以帮忙吗?
注意:这是针对硬件问题,但不是实际问题,只是众多可能解决方案之一中的一小步。但是,如果您能在不给我明确答案的情况下帮助我理解它,那就太好了。谢谢。
【问题讨论】:
-
简单地说,字符串字面量的类型是
char*而不是unsigned char*。 -
@tuğrulbüyükışık 我强烈建议不要使用强制转换来破坏类型安全。
-
那么 char + unsigned char 的联合数组效果很好,因为每个都是 1 字节,所以字节序不会成为问题。别名?
-
是否需要使字符无符号?你会和他们进行什么样的比较?
-
Mysticial 在字符串文字为
const char*上是正确的。我认为您出于错误的原因尝试进行转换;你能描述一下你正在解决的更广泛的问题吗?