Exceptions to array decaying into a pointer?

前端 未结 1 564
太阳男子
太阳男子 2020-11-22 16:09

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

相关标签:
1条回答
  • 2020-11-22 16:52

    Sure.

    In C99 there are three fundamental cases, namely:

    1. when it's the argument of the & (address-of) operator.

    2. when it's the argument of the sizeof operator.

    3. 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.

    0 讨论(0)
提交回复
热议问题