Исключения из распадающегося массива в указатель?
Я видел во многих постах, что "в большинстве случаев имена массивов превращаются в указатели".
Могу ли я узнать, в каких случаях / выражениях имя массива не превращается в указатель на его первые элементы?
1 ответ
Конечно.
В C99 есть три основных случая, а именно:
когда это аргумент
&
(адрес) оператора.когда это аргумент
sizeof
оператор.Когда это строковый литерал типа
char [N + 1]
или широкий строковый литерал типаwchar_t [N + 1]
(N
длина строки), которая используется для инициализации массива, как вchar str[] = "foo";
или жеwchar_t wstr[] = L"foo";
,
Кроме того, в C11, недавно представленный alignof
Оператор также не допускает, чтобы его аргумент массива превратился в указатель.
В C++ есть дополнительные правила, например, когда они передаются по ссылке.