奇数C ++字符数组参考

时间:2014-07-10 13:38:03

标签: c++ c arrays

我继承了以下代码,并希望了解有关所使用索引的更多信息。

...
char cpChMap[256];
memset(cpChMap, 0xff, 256);
for (i = 0; i < 10; i++)
    cpChMap['0' + i] = 0;
...

在[cpChMap[<character expression>]]之前,我从未见过用于索引和数组的字符,有人可以解释这是如何工作的或提供明确的引用,因为我似乎找不到合适的引用而且我一直在搜索一段时间。

感谢您的时间。

2 个答案:

答案 0 :(得分:4)

char是一个完整的类型。它们可用于算术表达式:

std::cout << '0' + 7 << std::endl;

'0''9'是连续的这一事实意味着'0' + 7具有相同的'7'值,这就是为什么在循环中:

for (i = 0; i < 10; i++)
    cpChMap['0' + i] = 0;

cpChMap使用索引'0'(与假设ASCII的48相同)到'9'

答案 1 :(得分:1)

char也是int8类型。 (整数,大小为8位= 1字节)

每个char等同于其ASCII值。

它没有回答这个问题,但我不明白他们为什么不这样做:

char cpChMap[256];
memset(cpChMap, 0xff, 256);
memset(&cpChMap['0'], 0, 10);