输出为: 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
#include
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