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++中,还有其他规则,例如,当它通过引用传递时.