8

问答题 8 /290

看看下面的一段程序有什么错误?
swap( int* p1,int* p2 ) 
{ 
 int *p; 
 *p = *p1; 
 *p1 = *p2; 
 *p2 = *p; 
} 

参考答案

1.需要一个返回值void 
2在swap函数中,p是一个“野”指针,有可能指向系统区,导致程序运行的崩溃。在VC++中DEBUG运行时提示错误“Access Violation”。该程序应该改为:
void swap( int* p1,int* p2 ) 
{ 
 int p; 
 p = *p1; 
 *p1 = *p2; 
 *p2 = p; 
}