为什么指针变量不可以做位运算指针变量为什么是因为什么原因限制不可以做位运算呢?我觉得对指针变量做位运算还是有意义的呀.例如通过异或可以交换两个变量的值:a=a^b;b=b^a;a=a^b;原来
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/08 17:50:56
为什么指针变量不可以做位运算指针变量为什么是因为什么原因限制不可以做位运算呢?我觉得对指针变量做位运算还是有意义的呀.例如通过异或可以交换两个变量的值:a=a^b;b=b^a;a=a^b;原来
为什么指针变量不可以做位运算
指针变量为什么是因为什么原因限制不可以做位运算呢?
我觉得对指针变量做位运算还是有意义的呀.
例如通过异或可以交换两个变量的值:
a=a^b;
b=b^a;
a=a^b;
原来想交换两个指针变量的指向的话也可以通过上面的方法,但是发现编译出错.必须改为通过中间指针变量交换了.
为什么指针变量不可以做位运算指针变量为什么是因为什么原因限制不可以做位运算呢?我觉得对指针变量做位运算还是有意义的呀.例如通过异或可以交换两个变量的值:a=a^b;b=b^a;a=a^b;原来
楼主肯定是想要这个!
须注意的地方:赋值双方的类型必须相同!
》》》对于人,才有void,int,float,int *.等类型,对于机器,一切皆为0,1!
顺便提醒一句:玩弄奇技淫巧者,小人也!楼主不要走火入魔!
#include
int main(void){
int i = 3;
int j = 2;
int *pi = &i;
int *pj = &j;
printf("before exchange: *pi = %d, *pj = %d\n", *pi, *pj);
pi = (int *)((int)pi ^ (int)pj);
pj = (int *)((int)pj ^ (int)pi);
pi = (int *)((int)pi ^ (int)pj);
printf("after exchange: *pi = %d, *pj = %d\n", *pi, *pj);
return 0;
}