请教一个关于指针的菜鸟问题
void swap(int p1,int p2)
{
int p;
p=*p1;
*p1=*p2;
*p2=p;
}
(4)error C2100: illegal indirection
(5) : error C2100: illegal indirection
(5) : error C2100: illegal indirection
(6) : error C2100: illegal indirection
初学,以前也没什么基础,请各位大虾指点一下出错的原因和解决办法,谢谢!
[解决办法]
swap( int* p1,int* p2 )
{
int p;
p=*p1;
*p1=*p2;
*p2=p;
}
[解决办法]
void swap(int *p1,int *p2)
{
int p;
p=*p1;
*p1=*p2;
*p2=p;
}
[解决办法]
void swap(int p1,int p2)
{
int p;
p=*p1;
==〉问题出在这里。
p1传入的是int类型,此处把p1当指针使用。
第一,不知道你传入的参数是什么,所以该指针也许是非法地址,访问越界。
第二,int型和指针类型的不能互相转化,如果是64位平台,那绝对是非法地址。
第三,从函数名来看,是想交换两个参数的值,此时不能用形参,应该用值参,传入指针或饮用均可。
第四,如果想交换两个值,不必使用临时变量。最简单的使用^,最好理解的使用+。
努力学习,早日成才!