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