C语言中的一道例题,谁能帮忙详细解释一下每一步的含义?

#include<stdio.h>char*ss(char*s){char*p,t;p=s+1;t=*s;while(*p){*(p-1)=*p;p++;}*(p-1)=... #include<stdio.h>
char *ss(char *s)
{
char *p,t;
p=s+1;t=*s;
while(*p)
{*(p-1)=*p;p++; }
*(p-1)=t;
return s;
}
main()
{
char *p,str[10]="abcdefgh";
p=ss(str);
printf("%s\n",p);
}
展开
 我来答
freeeeeewind
2013-09-15 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1653万
展开全部
输出为: bcdefgha
解释:
char *ss( char *s) 函数ss 返回一个指向字符串的指针;函数参数 s 是一个指向字符串的指针
这样,在main 中调用 ss(str)后,s指向了str的首元素,也就是“abcdefgh"中的 ‘a'
char *p, t //定义一个char 指针 p 和一个char 变量 t
p = s+1 p指向s的第二个元素 , 及 p 指向了 'b'
t = *s // 取出第一个元素 'a' 存放到变量 t
while(*p) {} 这是一个循环, 循环结束条件为*p == null ,或者当 *p != null 就循环。注意:*p==null表示遇到字符串结尾;
循环体:*(p-1) = *p; p++; 将每个字符前一次,就是将 二个元素移动第一,第三个移动到第二....以此类推。
最后 *(p-1) =t 将第一个元素移动到最后
另外:注意 char str[10] = "abcdefgh" ,意思是 定义了10个char元素数组,并初始化前8个元素;剩下的str[8]和str[9]被初始化为0,就是 null字符
j
silence_mk
2013-09-15
知道答主
回答量:19
采纳率:0%
帮助的人:18.5万
展开全部
#include<stdio.h>
       char *ss(char *s)
       {
            /*函数实现的功能为将s的每一位的值赋给低位,将最低位赋给最高位值*/
              char *p,t;
             p=s+1; // p指向地址指向s指针所指地址加1的位置
             t=*s;//指针s所指向的地址的内容赋给变量t
              while(*p)//当p所指向的地址中的内容不为空则执行
              {
         *(p-1)=*p; //将p所指向的内容赋给p-1地址 
         p++; //地址p指向p+1的地址 
       }
        *(p-1)=t;// 此时p-1刚好为s的最后一位,将t中值赋给p-1
的地址 
        return s;
   }
       main()
       {
              char *p,str[10]="abcdefgh";
              p=ss(str);
              printf("%s\n",p);
       }

       输出结果:bcdefgha

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式