首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问一个关于指针的初学者有关问题

2012-03-23 
请教一个关于指针的菜鸟问题voidswap(intp1,intp2){intpp*p1*p1*p2*p2p}(4)errorC2100:illegalindi

请教一个关于指针的菜鸟问题
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位平台,那绝对是非法地址。
第三,从函数名来看,是想交换两个参数的值,此时不能用形参,应该用值参,传入指针或饮用均可。
第四,如果想交换两个值,不必使用临时变量。最简单的使用^,最好理解的使用+。

努力学习,早日成才!

热点排行