用字符做数组下标可以吗?
我的数组被初始化为容纳 256 个对象,因此越界访问似乎不是问题。但是,我遇到了一些奇怪的段错误,我发现这是因为我正在读取的字符值在某些情况下是负数。
不过,我不知道这怎么可能。然后,我将它转换为一个 unsigned char,但这也不起作用。我最终也在那里遇到了边界问题。我还尝试将 char 变量转换为 int,然后访问该数组,但我仍然遇到分段问题。
我可以做些什么来缓解这种情况?能够通过字符访问数组很好,因为我的程序为 ASCII 集中的每个字符都有一个数组单元格。好像有道理,就是不知道为什么不行。
最佳答案
使用字符类型的值作为数组索引是完全有效的。数组索引可以是任何整数类型; char
、unsigned char
、signed char
都是整数类型。
但是普通 char
可以是有符号的或无符号的,这取决于实现。要么与 signed char
具有相同的范围,要么与 unsigned char
具有相同的范围;无论哪种方式,它仍然是一个独特的类型。
因此,如果你有一个包含 256 个元素的数组,你可以安全地使用 unsigned char
对其进行索引,它的范围至少为 0 到 255。你不能安全地使用 对其进行索引>char
,因为它可能有负值。
Then, I casted it to an unsigned char, but that didn't work either. I ended up getting boundary issues there as well.
如果没有更多信息,我无能为力。
关于c++ - C/C++中使用字符作为数组下标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11715869/