Исключения из распадающегося массива в указатель?

Я видел во многих постах, что "в большинстве случаев имена массивов превращаются в указатели".
Могу ли я узнать, в каких случаях / выражениях имя массива не превращается в указатель на его первые элементы?

1 ответ

Решение

Конечно.

В C99 есть три основных случая, а именно:

  1. когда это аргумент & (адрес) оператора.

  2. когда это аргумент sizeof оператор.

  3. Когда это строковый литерал типа char [N + 1] или широкий строковый литерал типа wchar_t [N + 1] (N длина строки), которая используется для инициализации массива, как в char str[] = "foo"; или же wchar_t wstr[] = L"foo";,

Кроме того, в C11, недавно представленный alignof Оператор также не допускает, чтобы его аргумент массива превратился в указатель.

В C++ есть дополнительные правила, например, когда они передаются по ссылке.

Другие вопросы по тегам