这是一个用二级指针对整数从小到大排序的程序。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int a[7]={34,98,56,12,22,65,1};
int *p[7],i,j,*t;
for(i=0;i<7;i++)
p[i]=&a[i];
for(i=0;i<6;i++)//用冒泡排序
{
for(j=0;j<6-i;j++)
//现在以下if语句可以正常输出排序后结果。但修改为if(*(*p+j)>*(*p+j+1))输出的结果则没有排序
if(**(p+j)>**(p+j+1))
{
t=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=t;
}
}
for(i=0;i<7;i++)
printf("% d",*p[i]);
return 0;
}
这俩含义有什么区别吗?我用*(p+j)和*(p+j)单个输出数组一个数时候结果都是一样的,为什么排序的时候就不行了
后来输出了一下他们的地址,发现有的地址已经不是数组中的原地址,为什么还能输出..