
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);
} 展开
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);
} 展开
2个回答
展开全部
输出为: 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
解释:
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
展开全部
#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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询