void foo(int n, int (*p)[n]) {
(*p)[n] = 1;
}
which has failed to catch on, because it still stores the pointer and the length as two separately handled objects.> Dennis Ritchie got it right
"This paper proposes to extend C by allowing pointers to adjustable arrays and arranging that the pointers contain the array bounds necessary to do subscript calculations and compute sizes."
It appears to be phat pointers.