#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 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 南城Flipped 2021-12-04 11:02关注
第一次循环的时候 *p++这个条件使得p的指向指在了字符串末尾位置为h,第二次循环 *p--不就是指向从h位置变到0了吗
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 cad图纸,chx-3六轴码垛机器人
- ¥15 移动摄像头专网需要解vlan
- ¥20 access多表提取相同字段数据并合并
- ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
- ¥20 Java-Oj-桌布的计算
- ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
- ¥20 有人知道这种图怎么画吗?
- ¥15 pyqt6如何引用qrc文件加载里面的的资源
- ¥15 安卓JNI项目使用lua上的问题
- ¥20 RL+GNN解决人员排班问题时梯度消失