冒泡排序的问题,大家帮我看看?
main()
{
int a[10];
int i,t,*p1,*p2;
printf("input 10 numbers :\n");
for (i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for (p1=a;p1<=(a+8);p1++)
for (p2=a;p2<=(a+9-p1);p2++)
if (*p2>*(p2+1))
{
t=*p2;
*p2=*(p2+1);
*(p2+1)=t;
}
printf("the sorted numbers :\n");
for (i=0;i<10;i++)
printf("%d ",a[i]);
getch();
}
编译器报错
[Warning] In function `main':
[Warning] comparison between pointer and integer
大家帮我看看这段代码哪里出了问题.
问题点数:20、回复次数:4Top
1 楼imRainman(雨人)回复于 2004-11-02 02:39:41 得分 5
把这句:for (p2=a;p2<=(a+9-p1);p2++)
改为:for (p2=a;p2<=(a+8-(p1-a));p2++)Top
2 楼imRainman(雨人)回复于 2004-11-02 02:48:51 得分 10
指针和指针相减,结果是一个整数,代表中间元素的个数。
比如:int i[10] ; &i[0] - &i[9] = 9
所以说:a+9-p1的结果会是一个整数,而不是楼主希望的指针。
因此,编译器会产生一个警告:comparison between pointer and integer。
Top
3 楼picoolo1124(◎蚂蚁◎心有多大,胸就有多大)回复于 2004-11-02 09:02:48 得分 5
把这句:for (p2=a;p2<=(a+9-p1);p2++)
改为: for (p2=a;p2<=a+(a+9-p1);p2++)Top
4 楼chenguodong()回复于 2004-11-02 23:11:14 得分 0
谢谢大家,我明白了.散分咯~Top




