gpt4 book ai didi

c - 当我将数组作为函数参数传递时,为什么指针会丢失其引用? C

转载 作者:行者123 更新时间:2023-11-30 18:18:09 25 4
gpt4 key购买 nike

我的问题是有这个代码:

int size=4384;
char buffer[size];
codifyDHCPmessage(buffer, message, size);

其中 message 是一个仅包含 char[] 的结构体,函数在缓冲区中返回该结构体中的所有字段。

我通过缓冲区数组对其进行测试,并检查所有字段是否正常。

但我的问题是,如果我再次将该缓冲区传递到新函数中,如下所示:

decodifyDHCPmessage(buffer,messageAux, size);

我在该函数中做的第一件事是检查缓冲区的大小,它只告诉我缓冲区的大小是 4,而实际上它应该是 4384......而且我不知道为什么。

我必须说我不是 C 专家,指针和内存分配问题对我来说很难。

提前非常感谢。

最佳答案

当作为参数传递给函数时,静态堆栈数组会“衰减”为普通的旧指针。然后发生的事情是使用 sizeof 获取指针的大小,而不是数组的大小。您需要将数组大小作为另一个参数传递。

关于c - 当我将数组作为函数参数传递时,为什么指针会丢失其引用? C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10138789/

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