原帖由 [bold][underline]cosdos[/underline][/bold] 于 2007-12-6 23:10 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1134910&ptid=190855]

[/url]
void xchange(int a,int b)
{
*(int *)a=*(int *)a +*(int *)b;
*(int *)b=*(int *)a-*(int *)b;
*(int *)a=*(int *)a-*(int *)b;
}
把a 强制转换为 (int *) 然后再取值。

完全不正确!
//- ...
结果倒是正确
因为他是这样调用的
xchange(&a,&b);
- -!
指针是很伟大
但也不是这么用的
真理和谬误只有一步之遥
其实楼主要是加上一句typedef int INT_HANDLE;
声明改成这样void xchange(INT_HANDLE a,INT_HANDLE b);就比较好了
当然要是这么用的话最好别用int,使用unsigned long会更好一些