数组衰减为指针的例外情况?
我在很多post中都看到“在大多数情况下,数组名称会衰减为指针”。
我可以知道在什么情况下/数组名称表达式不会衰减成指向其第一个元素的指针吗?
当然。
在C99中有三个基本情况,即:
-
当它是
&
(地址)运算符的参数时。 -
当它是
sizeof
运算符的参数时。 -
当它是
char [N + 1]
类型的字符串文字或类型为wchar_t [N + 1]
的宽字符串文字(N
是字符串的长度)时,它用于初始化数组,如char str[] = "foo";
或者wchar_t wstr[] = L"foo";
。
此外,在C11中,新引入的alignof
运算符也不允许其数组参数衰减为指针。
在C ++中,还有其他规则,例如,当它通过引用传递时。