【发布时间】:2011-08-10 17:22:51
【问题描述】:
我有一个简单的结构:
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)。
如果在另一个函数中我想在 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] 有问题。
【问题讨论】:
标签: c pointers c99 struct dereference