在整形数组中括号里为字符什么意思,有什么用,其中有什么原理没?

    a[c - '0']++;在整形数组中括号里为字符什么意思,有什么用,其中有什么原理没?
希望有人能讲解先
```c
#define _CRT_SECURE_NO_WARNINGS
#include 
 
int main() {
    int a[10] = { 0 }; //利用数组下标充当0~9
    char c;
    scanf("%c", &c);
    while (c != '\n') {
        a[c - '0']++;  //单个数组元素存储 0~9出现的次数
         scanf("%c", &c);
    }
    int i;
    for (i = 0; i <= 9; i++) {
        if (a[i] != 0) {
            printf("%d:%d\n", i, a[i]);
        }
    }
    return 0;
}


```

'1' - '0' = 1,这样字符1就可以记录数量到a[1]中,同理其它字符也是