数组衰减为指针的例外情况?

时间:2013-07-19 18:21:59

标签: c arrays pointers

我在很多帖子中都看到“在大多数情况下,数组名称会衰减成指针”。
我能否知道数组名称在什么情况下/表达式不会衰变为指向其第一个元素的指针?

1 个答案:

答案 0 :(得分:51)

不确定

在C99中有三个基本案例,即:

  1. 当它是&(地址)运算符的参数时。

  2. 当它是sizeof运算符的参数时。

  3. 当它是类型为char [N + 1]的字符串文字或类型为wchar_t [N + 1]的宽字符串文字(N是字符串的长度)时,用于初始化数组,如char str[] = "foo";wchar_t wstr[] = L"foo";

  4. 此外,在C11中,新引入的alignof运算符也不允许其数组参数衰减为指针。

    在C ++中,还有其他规则,例如,当它通过引用传递时。