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
sizeofoperator. -
When it’s a string literal of type
char [N + 1]or a wide string literal of typewchar_t [N + 1](Nis 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.