gpt4 book ai didi

c++ - 什么是数组到指针衰减?

转载 作者:太空宇宙 更新时间:2023-11-04 04:09:37 25 4
gpt4 key购买 nike

什么是指针衰减数组?跟数组指针有关系吗?

最佳答案

据说数组会“退化”为指针。不能重新指向声明为 int numbers [5] 的 C++ 数组,即您不能说 numbers = 0x5a5aff23。更重要的是,衰变一词意味着类型和维度的损失; numbers 通过丢失维度信息(计数 5)衰减为 int*,并且类型不再是 int [5]。在这里寻找 cases where the decay doesn't happen .

如果你按值传递一个数组,你真正做的是复制一个指针 - 一个指向数组第一个元素的指针被复制到参数(其类型也应该是数组元素类型的指针)。这是由于数组的衰减性质而起作用的;一旦衰减,sizeof 不再给出完整数组的大小,因为它本质上变成了一个指针。这就是为什么首选(除其他原因外)通过引用或指针传递。

传入数组的三种方式1:

void by_value(const T* array)   // const T array[] means the same
void by_pointer(const T (*array)[U])
void by_reference(const T (&array)[U])

最后两个将给出正确的 sizeof 信息,而第一个不会,因为数组参数已经衰减以分配给参数。

1 常量 U 应该在编译时已知。

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

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