您的位置:首页 > 编程语言 > C语言/C++

c语言交换两个整数值的错误

2010-06-03 17:02 232 查看
看看下面的一段程序有什么错误:

swap( int* p1,int* p2 )

{

 
int *p;

 
*p = *p1;

 
*p1 = *p2;

 
*p2 = *p;

}
  


swap
函数中,
p
是一个



指针,没有初始化的情况下它有可能指向系统区,像这样强制赋值,可能导致程序运行的崩溃。

不可强制赋值,p = NULL后更不行,p没指向任何东西,它不可能有*p操作的在。
VC++

DEBUG
运行时提示错误
“Access Violation”


该程序应该改为:

swap( int* p1,int* p2 )
{
int p;
p = *p1;
*p1 = *p2;
*p2 = p;
}
或
swap2(int *a, int *b)
{
*a^=*b^=*a^=*b;
}
swap3(int *a, int *b)
{
*a = *a + *b;
*b = *a - *b;
*a = *a - *b;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: