我想使用memcpy()
将长long数组复制到整数数组。 long long数组的大小是整数数组大小的一半。
除memcpy()
以外我用过这个:
int *dst;
long long src[10];
dst=(int*)src;
但我只想使用memcpy()
。
因为目的是,long long数组是一个临时数组,它将其内容复制到源数组的子数组。源阵列是二维阵列。
答案 0 :(得分:3)
一般来说,sizeof (long long) > sizeof (int)
。
因此,您无法使用long long
等逐字节复制操作将int
数组中的所有元素复制到memcpy()
数组中;数据不合适。
您可以使用循环来手动执行(截断)副本。这当然会丢失信息:
const long long incoming[] = { 1ll, 2ll, /* more here ... */ };
int out[sizeof incoming / sizeof *incoming];
for(size_t i = 0; i < sizeof incoming / sizeof *incoming; ++i)
out[i] = (int) incoming[i];