两个不同指针之间的memcpy()

时间:2015-10-15 18:42:44

标签: c

使用memcpy(),我想将数组的一部分复制到另一个数组,其中源数组是一个双指针数组。是否有解决方法来实现这样的复制过程没有更改双指针?

int **p;
p= malloc(sizeof(int *));
p= malloc(5 * sizeof(int));

int *arr;
arr= malloc(5 * sizeof(int));

for(i = 0; i < 5; i++){
  p[i] = 1;
}

memcpy(arr, (2+p) , 3*sizeof(int)); // I want to start copying 3 elements starting from the third position of the src.

1 个答案:

答案 0 :(得分:1)

这是一个简单的例子 -

int main(void){
   int **p;
   int *arr,i;
   p= malloc(sizeof(int *));        // allocate memory for one int *
   p[0]=malloc(5*sizeof(int));      // allocate memory to int *
   for(i = 0; i < 5; i++){
        p[0][i] = i+1;             // assign values
     }      
  arr= malloc(5 * sizeof(int));        // allocate memory to arr
  memcpy(arr,&p[0][2],3*sizeof(int));  // copy last 3 elements to arr

  for( i=0;i<3;i++){              
     printf("%d",arr[i]);              // print arr
   }
  free(p[0]);
  free(p);
  free(arr);

}

Output