#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//指针指向数组的不同位置
//实现middle-begin字节和end-middle字节的倒转
void romate(void *begin,void *middle,void *end); //end存储的是数组后面的第一个字节的地址
int main(void) //end不指向数组里的任何元素
{
int n=0;
int arry[]={1,2,3,4,5,6,7,8,9,10};
romate(arry,arry+7,arry+10); //arry[0]---arry[6] | arry[7] | arry[7]---arry[9]
for(n=0;n<10;n++)
{
printf("%d\n",arry[n]);
}
return 0;
}
void romate(void *begin,void *middle,void *end)
{
int beg=(char*)middle-(char*)begin;
int meg=(char*)end-(char*)middle;
void *tmp=(char*)begin+meg;
char *temp=malloc(beg); //buffer
memcpy(temp,begin,beg);
memcpy(begin,middle,meg);
memcpy(tmp,temp,beg);
}