Does the C standard require that the size of an array of n elements be n times the size of an element, either by explicit statement or by rigorous logical deduction from its requirements?
For example, could int (*x)[5] = malloc(5 * sizeof **x); fail to request sufficient space for an array of five int?
C 2011 [N1570] 6.5.3.4 7 shows an example of computing the number of elements in an array as sizeof array / sizeof array[0]. However, examples are not a normative part of the standard (per paragraph 8 of the forward).
6.2.5 20 says an array type describes a contiguously allocated nonempty set of objects with a particular type but is silent about the total memory required.
This is solely a language-lawyer question; actual implementations are irrelevant. (To appease those who want concrete examples, hypothesize a C implementation that requires additional memory management for large arrays, so creating an array requires creating some additional data to help manage the memory.)