【发布时间】:2012-01-30 14:53:33
【问题描述】:
为了我自己的学习利益,我正在尝试用 C 语言自己实现常见的数据结构。我目前的工作是一个向量,我希望它能够保存一个任意类型(或者至少是类型大小,但这不是 C 语言中真正重要的吗?)。我的结构如下:
struct vector
{
void *item;
size_t element_size;
size_t num_elements;
}
但是,我不明白的是,如果类型应该是任意的,我如何引用 *item 数组中的特定元素。我知道 element_size,但这对索引引用没有帮助(例如 item[5]),因为 void 不是一种类型。我认为将元素称为字节偏移量是最简单的。因此,如果我持有一个大小为 12 的结构向量,item[5] 将在 item* 的 12*5=60 字节处。但是,我不明白如何检索该数据。我知道我想要 item+60 中的 12 个字节,但是如何让编译器理解这一点?我进入预处理器领域了吗?
【问题讨论】:
标签: c void-pointers