#include <stdio.h>
#define MAXS 20
void f( char *p );
void ReadString( char *s ); /* 由裁判实现,略去不表 */
int main()
{
char s[MAXS];
gets(s);
f(s);
printf("%s\n", s);
return 0;
}
/* 你的代码将被嵌在这里 */
void f( char *p ){
//本题大概想考察对于指针的了解
//*p其实就是一个地址值,这个地址里存放着一个字符常量
//所以就有了*p=s[0] 的道理
//我的思路就是先把字符串里的东西都先存在一个空白字符串里
//然后再倒赋给*p
char t[MAXS];
int i,j,k,h;
for (i = 0;*p != '\0';*p++,i++){
t[i]=*p;
h=i;
}
//这里要注意,循环出来的时候
//*p指向的是'\0' ,所以要把地址值减去
//变成字符串的最后一个字符
//不然倒赋 会失败
*p--;
t[i]='\0';
//h是最大下标
for (i = 0;i <= h;i++,*p--){
*p=t[i];
}
}

函数部分第一次循环之后,进行第二次的时候, t[i]不是从t[0]开始的嘛?为什么输出来时倒序的?而且指针变量*p不是指向s[0]?为什么还要 p-- ?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-