使用字符作为数组中的索引

Div*_*ain 2 c++ arrays

#include<iostream>
using namespace std;
int main()
{
    int arr[128];
    arr['a'] = 101;
    cout<<arr['a'];

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

所以我进行了实验,发现字符可以用作数组中的索引,而不是传统的整数。该程序给出了正确的输出,即正确的 101。

但这一切是如何运作的?就像在空间分配和对该元素的引用方面一样。

问题:

  1. 声明了 128 个 int 块,总共 512 个字节。程序如何将“101”存储在字符块中,即在字符占位符“a”中?空间分配是什么样的?
  2. 当我将数组的索引数减少到 128 以下时,为什么这个程序不起作用?
  3. 由于这不是地图而是数组,程序如何通过“a”引用“101”?

Bat*_*eba 8

'a'是一种char具有实现定义的数值的类型(取决于您的平台上使用的字符编码:在 ASCII 中,它是 97)。

该数字char用于评估arr['a']. 如果你幸运的话,这会给你一个arr. 如果值超出范围arr则程序的行为未定义。