我有一个整数数组:复制值整数结构
int num[20] = {1,1,5,5,1,1,5,9,2,2,6,1,1,2,5,5,1,3,6,2};
我想num
复制的元素到下面的结构:
struct tuple
{
int p1;
int p2;
int p3;
int p4;
};
我做了以下内容:
struct tuple *arr;
memcpy(&arr,&num,sizeof(num));
这似乎不起作用,因为我以后遇到分段错误在代码中。 当我尝试打印尺寸:
printf("size of arr: %lu, size of arr[0]: %lu \n", sizeof(arr), sizeof(arr[0]));
我得到如下:
size of arr: 8, size of arr[0]: 16
这是不对的,因为值应为:
size of arr: 80, size of arr[0]: 16
因此,当我尝试打印,它seg故障:
for (i=0;i<sizeof(arr)/sizeof(arr[0]);++i)
printf("%d,%d,%d,%d\n", arr[i].p1,arr[i].p2, arr[i].p3, arr[i].p4);
有人可以帮助我,我可能会出错吗?
您不能将'memcpy'指向未初始化的指针。 – chris
另外,'arr'是一个指针,那八个字节的大小并不奇怪。 –
@chris“memcpy”的参数是指针的地址。不确定这是否比未初始化的指针更糟或更好。 –