gpt4 book ai didi

C 语言按已知大小强制转换 void 指针

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

简单的问题,我们可以在 c 语言中将已知大小的未知数据类型转换为 void 指针吗?

考虑这种情况:

函数 assertEqual,它应该获取 2 个指针作为参数,取消引用它们并获得相等的值。您当然不能取消引用 void 指针,但是如果我知道指针指向的数据大小怎么办?我可以创建一些已知大小但未知数据类型的动态指针吗?该函数应类似于 assertEqual(void* expected, void* current, size_t size)

最佳答案

您可以将参数转换为 unsigned char*,然后比较第一个 size 字节(或者更好地使用 memcmp 这样做),但不能保证在给定值有多种表示的情况下它会做你想做的事(例如考虑结构中的填充,填充内容的差异可能是无害的,但它会被检测到这种方法还有其他情况,例如浮点格式的 NaN 值,从技术上讲,大多数原始类型都可能发生这种情况。

关于C 语言按已知大小强制转换 void 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39702673/

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