为什么2d整数数组为字符工作?

时间:2018-02-20 13:52:58

标签: c++ arrays multidimensional-array hash

我已声明2D int数组。但这也适用于角色。

int has[MAX][2];
void check(char* arr, int n) {
     int i;
     for(i=0;i<n;i++) {
            has[arr[i]][1]=0;       
     }
     for(i=0;i<n;i++) {
          has[arr[i]][0]=1;
          has[arr[i]][1]++;
     }
     cout<<has['i'][1];
}

1 个答案:

答案 0 :(得分:4)

当您声明这样的数组时:

    int has[300][2];

然后你像这样访问其成员:

    has['x'][3]   

    has['i'][1]

您正在为数组第一个索引使用字符而不是数字。

因此,在最后一个示例中,'i'(即char)将转换为其ascii值,即(dec)105,因此结果将为:

  has[105][1]