在C - Ints和Char *中输入类型

时间:2016-09-10 19:58:56

标签: c arrays casting void void-pointers

假设我有一个void* data数组,并要求用2种不同数据类型的信息填充它:一个int数组和一个字符串。

void* data;
int numbers[9];
char* title;

我理解为了将数字输入到数据数组中,我需要像这样对它进行类型转换:

memcpy((int*)data, numbers, sizeof(numbers));

但如果我想在将数字复制到数据后将title放入地址,该怎么办?

提前致谢。

1 个答案:

答案 0 :(得分:1)

不,由于memcpy()void *一起使用,因此无需输入广播:

memcpy(data, numbers, sizeof numbers);

当应用于非类型名称的任何内容时,()也不需要sizeof

对于第二部分,您需要计算地址:

memcpy((char *) data + sizeof numbers, title, 1 + strlen(title));

这里我假设title是一个以0结尾的字符串。由于您无法使用data进行指针运算,因此char *void *的演员阵容是必要的。