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?
C – Exceptions to Array Decaying into a Pointer
arraysc++pointers
Best Answer
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 typewchar_t [N + 1]
(N
is the length of the string) which is used to initialize an array, as inchar str[] = "foo";
orwchar_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.