In C18 we have:
§ 6.5.9p10
Two pointers compare equal if and only if both are null pointers, both are pointers to the same object(including a pointer to an object and a subobject at its beginning) or function, both are pointers to one past the last element of the same array object, or one is a pointer to one past the end of one array object and the other is a pointer to the start of a different array object that happens to immediately follow the first array object in the address space.
So for int a[4][2] = {{1, 2}, {3, 4}, {5, 6}, {7, 8}},
we can have a[1] == a[0] + 2.
Can that by consequence guarantee that *(a[1]) == *(a[0] + 2)?