gpt4 book ai didi

c - Malloc 用于 void 指针数组的单个元素

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:43 25 4
gpt4 key购买 nike

我必须使用通用类型。现在为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com