我在许多帖子中看到“在大多数情况下,数组名称会退化为指针”。
我可以知道在什么情况/表达式下数组名称不会衰减为指向其第一个元素的指针吗?
Sure.
在C99中存在三种基本情况,即:
当它是争论的时候&
(地址)运算符。
当它是争论的时候sizeof
操作员。
当它是类型的字符串文字时char [N + 1]
或类型的宽字符串文字wchar_t [N + 1]
(N
是字符串的长度),用于初始化数组,如char str[] = "foo";
or wchar_t wstr[] = L"foo";
.
此外,在C11中,新引入了alignof
运算符也不会让其数组参数衰减为指针。
在 C++ 中,还有其他规则,例如通过引用传递时的规则。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)