我必须使用通用类型。现在为 INT、FLOAT、DOUBLE、STRING。
让我们看看字符串。
我的数组是这样定义在字符串菜单中的。
char** Arr = (char**)malloc(number_of_strings * sizeof(char*));
现在我必须在这个数组中复制我的 BST 字符串。 所以调用我的迭代函数
pAlbero* A
是我指向 BST 节点的指针。
i
由 0 传递。
size
是我的 sizeof(type)
。
Copy是一个基于要复制的类型的回调函数。
void* copia_albero_in_array_ordinato_iter(pAlbero* A, void* Arr, int* i,
int size, FNCOPY Copy)
{
pStack* st = NULL;
pAlbero* T = A;
void* elemento;
while (st || T)
{
if (T)
{
st = push(st, T);
T = T->sx;
}
else
{
T = top(st);
st = pop(st);
elemento = malloc(size);
Copy(elemento, T->val);
copia_dato(Arr, *i, elemento, 0, sizeof(elemento));
free(elemento);
T = T->dx;
*(i) = *(i) + 1;
}
}
return Arr;
}
void copia_dato(void* dest, int d_pos, void *source, int s_pos, int dim)
{
void *dst_addr = dest + (d_pos * dim);
void *src_addr = source + (s_pos * dim);
memcpy(dst_addr, src_addr, dim);
}
我是 C 的新手,基本上我已经为我的数组分配了内存,但是我如何为其中的单个字符串单元格分配内存? 打印阵列工作正常。 在此先感谢您,如果我遗漏了一些内容,我深表歉意。
[评论更新]
做
Arr[i] = ...
给我:
array subscript is not an integer
做
Arr[*i] = ...
给我:
[Warning] dereferencing `void *' pointer, 4 invalid use of void expression
最佳答案
[Warning] dereferencing `void *' pointer, 4 invalid use of void expression
如果你声明
..., void * Arr, ...
Arr
是指向 void
的指针,将 []
运算符应用于 Arr
是隐式取消引用和将导致 void
类型的对象。后者不存在。这就是编译器提示的原因。
关于c - Malloc 用于 void 指针数组的单个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24342999/