void swap(int *p1,int *p2) //函数的作用是将*p1的值与*p2的值交换
{
int temp=0; //temp不需要定义成指针,因为它是用来存储p1中的数据的,所以只需要用一个整型变量就可以了。 你定义成指针,但指针并未给定内存空间,就用*去引用,会导致系统异常!
temp=*p1;
*p1=*p2;
*p2=temp;
}
这里问题出在 *temp上面了,其实你这里交换的时候不需要特别字义第三个指针,只需要一个整型的中间变量就可以了.*temp在执行*tepm=*p1的时候会报一个内存越界这样的错误.
其实只要稍微改一下就可以了,swap内部,把所有的*temp 改成temp,程序就没有问题了.
你将temp指针赋初值0,即NULL,意味着temp没有指向有意义的地址,其实指向0X00000000,但是那个地方你不能用,也就是说*temp无法赋值。把int *temp=0; 改成 int *temp;或者如qiufozhell所说直接用变量temp,不用指针