内存储器 与数组相互 转化
内存 与数组相互 转化
问题一:如何将多个数组 复制到一个内存块中
问题二:如何将内存转化为数组
------解决方案--------------------
改下:
memcpy((int*)buf + 2, bb, sizeof(int) * 2);
int cc[4];
memcpy(cc, buf, sizeof(int) * 4);
------解决方案--------------------
问题一:如何将多个数组 复制到一个内存块中
问题二:如何将内存转化为数组
int aa[2]={1,2};
int bb[2]={3,4};
void * buf=malloc(sizeof(int)*4);
ZeroMemory(buf, 4);
memcpy(buf,&aa[0],sizeof(int)*2);
如何将 bb 也复制到buf中,
如何将buf 转化为 int cc[4]?
------解决方案--------------------
改下:
memcpy((int*)buf + 2, bb, sizeof(int) * 2);
int cc[4];
memcpy(cc, buf, sizeof(int) * 4);
------解决方案--------------------
#include <stdio.h>
int main(){
int a[2] = {1, 2};
int b[2] = {3, 4};
char c[] = "abc";
double d[2] = {1.111, 2.222};
int size = sizeof(int) * 4 + sizeof(char) * strlen(c) + sizeof(double) * 2;
char *p = (char *)malloc(size);
memcpy(p, a, 8);
memcpy(p + 8, b, 8);
memcpy(p + 16, c, 3);
memcpy(p + 19, d, 16);
int *aa = (int *)malloc(2);
char *cc = (char *)malloc(1);
double *dd = (double *)malloc(8);
memcpy(aa, p, 4);
printf("%d\n", *aa);
memcpy(aa, p+4, 4);
printf("%d\n", *aa);
memcpy(aa, p+8, 4);
printf("%d\n", *aa);
memcpy(aa, p+12, 4);
printf("%d\n", *aa);
memcpy(cc, p + 16, 1);
printf("%c\n", *cc);
memcpy(cc, p + 17, 1);
printf("%c\n", *cc);
memcpy(cc, p + 18, 1);
printf("%c\n", *cc);
memcpy(dd, p+19, 8);
printf("%lf\n", *dd);
memcpy(dd, p+27, 8);
printf("%lf\n", *dd);
return 0;
}