木木在哭泣 2022-11-14 11:19 采纳率: 93%
浏览 12
已结题

为什么是p-2而不是p-1

问题遇到的现象和发生背景
用代码块功能插入代码,请勿粘贴截图

#include <stdio.h>
#include <conio.h>
#include <string.h>
void fun(char *p)
{
int n=0;
while(*p++)
{
n++;
}
p-=2;
while(n--)
{
printf("%c",*p--);
}
}

int main()
{
char str[100]={0};
gets(str);
fun(str);
_getch();
return 0;
}

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2022-11-14 11:28
    关注

    因为是while(*p++),结束条件是p指向字符串结束符。while结束后,p++使得指针又向后移动一位,指向字符串结束符之后的一个字节。由于第二个循环需要从字符串最后一个有效字符开始倒序输出字符。所以p实际需要向前移动两个字节才能指向第一个有效字符。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月22日
  • 已采纳回答 11月14日
  • 创建了问题 11月14日

悬赏问题

  • ¥15 求推荐发表需要付费的深度学习遥感场景分类SCI期刊
  • ¥15 无法在java控制台录入文字
  • ¥15 flutter网页应用用python的http服务器访问速度慢
  • ¥15 VESTA绘图原子颜色显示异常
  • ¥15 天翼云搭建多ip l2tp
  • ¥15 python实现CAD识图
  • ¥15 如何实现在renpy中创建并应用不同大小尺寸对话框?
  • ¥15 table表格有一列是固定列 滑动到最下面时 固定的那一列有几行没显示出来
  • ¥20 单细胞数据注释时报错
  • ¥15 vscode编译ros找不到头文件,cmake.list文件出问题,如何解决?(语言-c++|操作系统-linux)