首页 > 解决方案 > C 函数(如 memcpy)如何处理 void* 数组,因为您不能对 void 指针进行算术运算?

问题描述

我正在寻找在 C 中实现基本模板函数的解决方案,并使用宏制定了一个半解决方案,您可以在其中传递数组的类型文字,这是因为通用 list_t 结构具有“void * data”作为属性,并且你不能用 void* 做算术所以你必须把它转换。现在我有兴趣了解 C 语言本身如何处理泛型函数来操作 void* 数组。任何想法?

标签: c

解决方案


通用 list_t 结构具有“void* data”作为属性,并且您不能使用 void* 进行算术运算,因此您必须对其进行转换。

实际上,就list_t结构内部的成员本身而言,指针本身的大小是众所周知的,因此没有什么能阻止语言对列表进行索引。

但是,当您想要访问 所指向的内容时data,您确实必须将其转换为所需的类型,但这是一个不同的操作。

此外,因此,如果您将 a 的内容从或复制到任何类型的指针,C 将不会发出警告void *(但是,当两个指针都非空时,他会这样做)。


推荐阅读