c - C 中的类型转换 - Ints 和 Char*

标签 c arrays casting void void-pointers

假设我得到一个 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/

相关文章:

java - 向下转换 hibernate 查询时出现问题

c - 如何将任何文件读入链表?

C 链表 valgrind 大小读取无效

java - 通配符和原始类型转换之间有什么区别?

java - 将基类从java中的反序列化集合转换为继承类

javascript - 用 onclick 替换数组元素

c++ - 从 C/C++ 中的 64 位值中获取 32 位字而不用担心字节序

从 c 名称排序代码转换为 NASM 汇编代码会崩溃

ruby - ruby 数组中的空间按 %w

java - 将 String[] 数组添加到另一个 String[] 数组