求助一个循环不能交换数值的问题
代码:#include "stdio.h"
main()
{
int i,j,t;
int *p,**p1;
int Num[10]={15,35,23,17,56,100,1,12,45,90};
printf("\t\t使用指针的指针对数组元素排序\n\n");
p=Num;
p1=&p;
printf("原数组的顺序是:\n");
for(i=0;i<10;i++)
printf("%d ",*(p1[0]+i));
printf("\n");
for(i=0;i<10;i++)
if(*(p1[0]+i)<*(p1[0]+i+1))
{
printf("第%d次对比:\n",i+1);
printf("排序前*(p1[0]+i)=%d,*(p1[0]+i+1)=%d\n",*(p1[0]+i),*(p1[0]+i+1));
t=*(p1[0]+i);
*(p1[0]+i)=*(p1[0]+i+1);
*(p1[0]+1)=t;
printf("排序后*(p1[0]+i)=%d,*(p1[0]+i+1)=%d\n",*(p1[0]+i),*(p1[0]+i+1));
}
printf("\n排序后的数组的顺序是:\n");
for(i=0;i<10;i++)
printf("%d ",*(p1[0]+i));
printf("\n");
}
从这段代码执行可以看到循环到第二次的时候就不能交换,*(p1+i)和*(p1+i+1)的值了是怎么回事??第一次还是可以交换的啊 !
[ 本帖最后由 kknd84913 于 2013-1-17 14:15 编辑 ]