假设我得到一个 void* data
数组,并要求我用 2 种不同数据类型的信息填充它:一个 int 数组和一个字符串。
void* data;
int numbers[9];
char* title;
我知道要将数字输入到数据数组中,我需要像这样进行类型转换:
memcpy((int*)data, numbers, sizeof(numbers));
但是如果我想把title
放在数字被复制到数据后的地址中怎么办?
提前致谢。
最佳答案
不,不需要类型转换,因为 memcpy()
与 void *
一起工作:
memcpy(data, numbers, sizeof numbers);
当应用于非类型名称的任何内容时,也不需要带有 sizeof
的 ()
。
对于第二部分,您需要计算地址:
memcpy((char *) data + sizeof numbers, title, 1 + strlen(title));
这里我假设 title
是一个以 0 结尾的字符串。将 data
转换为 char *
是必要的,因为您不能使用 void *
进行指针运算。
关于c - C 中的类型转换 - Ints 和 Char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39430079/