奇数c++字符数组参考

Odd C++ Character Array Reference

本文关键字:参考 数组 字符 c++ 奇数      更新时间:2023-10-16

我继承了下面的代码,想知道更多关于使用索引的信息。

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

我从来没有见过一个char用于索引和数组之前[cpChMap[<character expression>]],有人可以解释这是如何工作的或提供一个明确的参考,因为我似乎找不到一个体面的参考,我已经搜索了一段时间。

感谢您的宝贵时间。

char为整型。它们可用于算术表达式:

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

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

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

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

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

每个字符都等于它的ASCII值。

这不是回答问题,但我不明白为什么他们不这样做:

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