gpt4 book ai didi

c - 什么情况下数组会衰减为指针?

转载 作者:太空狗 更新时间:2023-10-29 15:14:08 27 4
gpt4 key购买 nike

我只知道一个案例 当数组传递给函数时,它们会衰减为指针。任何人都可以详细说明数组衰减为指针的所有情况。

最佳答案

C 2011 6.3.2.1 3:

Except when it is the operand of the sizeof operator,… or the unary & operator, or is a string literal used to initialize an array, an expression that has type “array of type” is converted to an expression with type “pointer to type” that points to the initial element of the array object and is not an lvalue.

换句话说,数组通常退化为指针。该标准列出了它们的情况。

有人可能会认为,当您将数组与下标一起使用时,数组就充当了数组的角色,例如 a[3]。然而,这里发生的实际上是:

  • a 被转换为指针。
  • 下标运算符作用于指针和下标以产生指定对象的左值。 (特别是,a[3] 被评估为 *((a)+(3))。也就是说,a 被转换为一个指针,将3加到指针上,并应用*****运算符。)

注意:C 2011 文本包括“_Alignof 运算符”。这在标准的 C 2018 版本中得到了纠正,我已从上面的引用中删除了它。 _Alignof 的操作数始终是一个类型;您实际上不能将其应用于对象。因此,C 2011 标准将其包含在 6.3.2.1 3 中是一个错误。

关于c - 什么情况下数组会衰减为指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13569070/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com