我有一個整數數組:複製值整數結構
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」的參數是指針的地址。不確定這是否比未初始化的指針更糟或更好。 –