假设我有一个void* data
数组,并要求用2种不同数据类型的信息填充它:一个int数组和一个字符串。
void* data;
int numbers[9];
char* title;
我理解为了将数字输入到数据数组中,我需要像这样对它进行类型转换:
memcpy((int*)data, numbers, sizeof(numbers));
但如果我想在将数字复制到数据后将title
放入地址,该怎么办?
提前致谢。
答案 0 :(得分:1)
不,由于memcpy()
与void *
一起使用,因此无需输入广播:
memcpy(data, numbers, sizeof numbers);
当应用于非类型名称的任何内容时,()
也不需要sizeof
。
对于第二部分,您需要计算地址:
memcpy((char *) data + sizeof numbers, title, 1 + strlen(title));
这里我假设title
是一个以0结尾的字符串。由于您无法使用data
进行指针运算,因此char *
到void *
的演员阵容是必要的。