C语言——内存

mac2025-07-29  6

内存的重叠问题:

例题:将长度为n的数组arr,后面m个数据移到最前面(从后往前移动数据)。

解题思路:需要先定义一个中间变量tmp,将移动的m个数据进行存放,然后再将数组arr中的数据,由最后一个开始,依次往后移动m距离,然后将变量tmp中的数据移入数组arr中,数组arr的数据移动完成。

图解:

函数

//将长度为n的数组arr,后面m个数据移到最前面 void Move(int *arr,int n,int m) { if(arr==NULL || n<=0 || n<m)//判断 { return ; } int *brr = (int *)malloc(m*sizeof(int)); //将arr中后面的m个数据移到到brr中 int i; for(i=0;i<m;i++) { brr[i] = arr[n-m+i]; } //将arr中前面的数据后移 for(i=n-m-1;i>=0;i--)//从后往前 { arr[i+m] = arr[i]; } //将brr数据移到arr中 for(i=0;i<m;i++) { arr[i] = brr[i]; } free(brr); }
最新回复(0)