我有一个简单的结构:
typedef struct {
void *things;
int sizeOfThings;
} Demo;
things 旨在包含一组单独的“事物”,例如字符串或整数。我创建了一个指向它的指针:
Demo * Create(int value) {
Demo *d = malloc(sizeof(Demo));
if (d != NULL) {
d->sizeOfThings = value;
d->things = malloc(20 * value); // We'll have a max of 20 things
}
}
value
例如,对于整数数组,sizeof(int) 是 sizeof(int)。
如果在另一个函数中我想在 d->things 中插入一些东西(至少假设不是我只是将它添加到第一个插槽,位置管理在其他地方完成):
char * thing = "Me!";
strncpy(d->things[0], &thing, d->sizeOfThings);
我绕过 strncpy 区域
test.c:10: warning: pointer of type ‘void *’ used in arithmetic
test.c:10: warning: dereferencing ‘void *’ pointer
test.c:10: error: invalid use of void expression
我只是想了解使用 void* 作为概括我的功能的一种方式。我怀疑有什么问题d->things[0]
。