使用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.
答案 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);
}