这个C程序高手指点

来源:百度知道 编辑:UC知道 时间:2024/06/21 15:38:09
main()
{ int i,j; char str[7],*p=str,t;
scanf("%s",str);
for(i=0;i<6;i++)
{ for(j=i+1;j<7;i++)
if(p[j]>p[i])
{t=p[j];p[j]=p[i];p[i]=t;}
}
p=str;
printf("%s",p);
}

我在学指针 这个是我自己想出来的程序,功能想从大到小排列数组中的字符,可是无法运行,高手指点

if(p[j]>p[i]) P已经是个指针那么P所存的就是数组的地址,就不能这样比较, 错误

{
t=p[j];p[j]=p[i];p[i]=t;} 变量P=t 可以这时存的是t的地址不允许P[X],因为P没有元素,只能P++,是对地址加1指像下个数组单元,因为数组地址是连续的,可以这样unsigned char *p=str;
for(j=0;j<7;j++)
{
*p=j;
p++;
}