看看下面的一段程序有什么错误:
swap( int* p1,int* p2 )
{
int *p;
*p = *p1;
*p1 = *p2;
*p2 = *p;
}
在 swap 函数中, p 是一个 “ 野 ” 指针,没有初始化的情况下它有可能指向系统区,像这样强制赋值,可能导致程序运行的崩溃。
不可强制赋值,p = NULL后更不行,p没指向任何东西,它不可能有*p操作的在。 VC++ 中 DEBUG 运行时提示错误 “Access Violation” 。
该程序应该改为: