C语言里的指针怎么比大小,都是地址到底谁大呀?

#include<stdio.h>voidfun(char*p){charmax,*q;inti=0;max=p[i];while(p[i]!=0){if(max<p[i... #include<stdio.h>
void fun(char*p)
{
char max,*q;
int i=0;
max=p[i];
while(p[i]!=0)
{
if(max<p[i])
{
max=p[i];
q=p+i;
}
i++;
}
while(q>p)
{
*q=*(q-1);
q--;
}
p[0]=max;
}
void main()
{
char str[80];
printf("Enter a string: ");
gets(str);
printf("\nThe original string: ");
puts(str);
fun(str);
printf("\nThe string after moving: ");
puts(str);
printf("\n\n");
}
展开
 我来答
百度网友fe016f1
2014-08-29 · TA获得超过802个赞
知道小有建树答主
回答量:467
采纳率:77%
帮助的人:304万
展开全部
本来就不存在谁大谁小,只有当指针是指向数组或字符串中元素时可以进行一些代数操作
如果是要比较指针指向的值的大小,请使用*操作符……但注意只有*p指向的数据类型可以比较才有效

此处是指向字符串的,大小就是p所指的元素(字符)在字符串中的前后顺序
更多追问追答
追问
我不明白第二个while怎么实现的顺移呀?p和主函数有联系,而p中只有平p[0]改变了,其他都没变呀?
追答
第二个while就是将原字符串中的其他字符依次后移一位
q>p 即q指向的是p之后的数组元素……由于上一个while中q被定位在了字符串的末尾,因此这里就是从末位起不断的等于上一位
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式