内存储器 与数组相互 转化

内存 与数组相互 转化
问题一:如何将多个数组 复制到一个内存块中
问题二:如何将内存转化为数组

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(buf + sizeof(int) * 2, bb, sizeof(int) *2);
memcpy(cc, buf, sizeof(int) * 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;
}