我继承了以下代码,并希望了解有关所使用索引的更多信息。
...
char cpChMap[256];
memset(cpChMap, 0xff, 256);
for (i = 0; i < 10; i++)
cpChMap['0' + i] = 0;
...
在[cpChMap[<character expression>]
]之前,我从未见过用于索引和数组的字符,有人可以解释这是如何工作的或提供明确的引用,因为我似乎找不到合适的引用而且我一直在搜索一段时间。
感谢您的时间。
答案 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);