79

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

4

1 回答 1

69

当然。

在 C99 中存在三种基本情况,即:

  1. 当它是&(address-of) 运算符的参数时。

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

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

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

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

于 2013-07-19T18:26:26.750 回答