nj-*_*ath 56 c arrays pointers
我在许多帖子中都看到"在大多数情况下,数组名称会衰减为指针".
我可以知道在什么情况下/数组名称表达式不会衰减成指向其第一个元素的指针吗?
小智 51
当然.
在C99中有三个基本情况,即:
当它是&
(address-of)运算符的参数时.
当它是sizeof
运营商的论点时.
当它是一个字符串文字的类型char [N + 1]
或一个宽字符串文字的类型wchar_t [N + 1]
(N
是字符串的长度),用于初始化一个数组,如在char str[] = "foo";
或wchar_t wstr[] = L"foo";
.
此外,在C11中,新引入的alignof
运算符也不会让其数组参数衰减为指针.
在C++中,还有其他规则,例如,当它通过引用传递时.