C 中的类型转换 - Ints 和 Char*
Type casting in C - Ints and Char*
假设我得到一个 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 *
.
进行指针运算
假设我得到一个 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 *
.