Интересующиеся могут посмотреть немного о массивах да указателях на электрониксе. Я там достаточно и примеров, и цитат из стандартов привёл.
Может, на днях ещё что-то напишу тут.
p.s[0] Да, [3] для одномерного массива там вообще ничего не означает. Аргумент имеет тип указателя на int. Скобки так, для приятствия чтения, чтобы читающий знал, чего функция ждёт. Всё же int arr[3] информативнее, чем int *arr (кстати, main(int argc, char *argv[]) и main(int argc, char **argv) тоже эквивалентны).
Для многомерных индексаций foo(int arr[3][7][TUZ]) все размеры, кроме первого, важны -- для вычисления правильных смещений.
p.s[1] Мне бы терпение и талант писательства Леонида Ивановича, у меня уже сайт забит был бы красиво оформленными толкованиями стандарта для тех, кто морально не готов сам продираться сквозь это
