Exceptions to array decaying into a pointer?
arrays, c, pointers
Solution
Sure.
In C99 there are three fundamental cases, namely:
when it's the argument of the `&` (address-of) operator.
when it's the argument of the `sizeof` operator.
When it's a string literal of type `char [N + 1]` or a wide string literal of type `wchar_t [N + 1]` (`N` is the length of the string) which is used to initialize an array, as in `char str[] = "foo";` or `wchar_t wstr[] = L"foo";`.
Furthermore, in C11, the newly introduced `alignof` operator doesn't let its array argument decay into a pointer either.
In C++, there are additional rules, for example, when it's passed by reference.
Problem
I have seen in many posts that "in most of the cases array names decay into pointers". Can I know in what cases/expressions the array name doesn't decay into a pointer to its first elements?