美文网首页
CSAPP 习题2.10

CSAPP 习题2.10

作者: Jianbaozi | 来源:发表于2019-01-29 23:44 被阅读0次
    using namespace std;
    void inplace_swap(int *x,int *y);
    void reverse_array(int a[],int cnt);
    int main(){
        int array[5]={1,2,3,4,5};
        reverse_array(array,5);
        for(int i=0;i<5;i++)
            cout<<array[i]<<' ';
            return 0;
    }
    void inplace_swap(int *x,int *y){
        *y=*x^*y;
        *x=*x^*y;
        *y=*x^*y;
    }
    void reverse_array(int a[],int cnt){
        int first,last;
        for(first=0,last=cnt-1;first<last;first++,last--)
            inplace_swap(&a[first],&a[last]);
    }
    

    对于任一向量a ,有~~a^a=0(^:XOR)~~
    inplace_swap 利用了~~(a^b)^a=b~~属性
    如果for循环中循环条件为first<=last,将导致中间元素被置为0.

    相关文章

      网友评论

          本文标题:CSAPP 习题2.10

          本文链接:https://www.haomeiwen.com/subject/evafsqtx.html