Это то, что я нашел в течение моего учебного периода:
#include<iostream>
using namespace std;
int dis(char a[1])
{
    int length = strlen(a);
    char c = a[2];
    return length;
}
int main()
{
    char b[4] = "abc";
    int c = dis(b);
    cout << c;
    return 0;
}  
Итак, в переменной int dis(char a[1]) [1], кажется, ничего не делает и не работает на 
все, потому что я могу использовать a[2]. Также как int a[] или char *a. Я знаю, что имя массива - это указатель и как передать массив, поэтому моя головоломка не касается этой части.
Я хочу знать, почему компиляторы допускают такое поведение (int a[1]). Или у него есть другие значения, о которых я не знаю?
