主页 > IT业界  > 

嵌套调用实现数组元素逆序存放

嵌套调用实现数组元素逆序存放

主函数调用reverse_array(int ptr[],int cnt)函数,该函数在调用inplace_swap(int *x,int *y)函数时,把两个不同的地址送给inplace_swap(int *x,int *y)函数,实现这两个位置处元素的交换。

令*x=a,*y=b

则*y= *x^*y执行后,*x=a,*y=a^b.

然后,*x= *x^*y执行后,*x=a^(a^b)=b,*y=a^b.

最后,*y= *x^*y执行后,*x=b,*y=b^(a^b)=a.

两个不同位置处的数实现交换。

源程序

void reverse_array(int ptr[],int cnt); void inplace_swap(int *x,int *y);

void main() {     int array[]={1,2,3,4,5,6,7};     int cnt=sizeof(array)/sizeof(array[0]);     reverse_array(array,cnt);  }

void reverse_array(int ptr[],int cnt) {     int first,last;     for(first=0,last=cnt-1;first<last;first++,last--)       inplace_swap(&ptr[first],&ptr[last]); }

void inplace_swap(int *x,int *y) {     *y= *x^*y;     *x= *x^*y;     *y= *x^*y; } 当然,把inplace_swap(int *x,int *y)的函数体放在reverse_array(int ptr[],int cnt)中,整体结构就会简单一些,但reverse_array(int ptr[],int cnt)函数的功能就复杂一些。

标签:

嵌套调用实现数组元素逆序存放由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“嵌套调用实现数组元素逆序存放