我正在用C编写一个动态数组。
typedef struct __c_array {
void**_elem;
int cur_size;
int capacity;
}c_array;我的界面如下所示:
extern void push_back_c_array ( c_array*, void *);现在,用户必须为要推入数组的元素分配内存。有没有办法使用void *来避免这种情况。
我想用它来做下面的事情
int a = 5;
push_back_c_array ( <ARRAY_PTR>, a );这有没有可能。
发布于 2011-03-31 15:23:57
你举了一个例子,只要你使用整数或任何其他与a=5大小相同的类型,whit就应该可以工作。泛型数组的用户将希望推送结构,就像您的一样。但是,大元素不能/不应该通过值传递,但它的指针应该传递。
使用泛型和no no on sizeof(int)会给用户带来一些额外的工作。我认为最好的解决方案是在函数中传递分配的指针(void*),无论谁想要取出这个元素,都应该释放()这个结构。
https://stackoverflow.com/questions/5496211
复制相似问题