“*(p++)”和“*(++p)”有什么区别 ?

 我来答
呆呆老衲已成仙
2023-04-29 · TA获得超过138个赞
知道大有可为答主
回答量:4689
采纳率:99%
帮助的人:185万
展开全部

*(p++)和*(++p)是两个不同的表达式,它们的区别在于它们对指针的操作次序不同。

*(p++)表示先取出指针p所指向的内容,再将p向后移动一位。换句话说,这个表达式的操作顺序是:取值 -> 移动指针。例如,下面的代码将打印出数组a中的前五个元素:

输出结果为:

*(++p)表示先将指针p向后移动一位,再取出指针所指向的内容。换句话说,这个表达式的操作顺序是:移动指针 -> 取值。例如,下面的代码将从数组a的第二个元素开始打印出所有元素:

输出结果为:

需要注意的是,*(p++)和*(++p)虽然在操作顺序上不同,但是它们都会移动指针p,因此需要谨慎使用,以免出现意想不到的错误。

刺任芹O
2022-11-16 · TA获得超过6.2万个赞
知道顶级答主
回答量:38.7万
采纳率:99%
帮助的人:8334万
展开全部
  • *(p++) -------- 先访问指针p所指存储单元,之后指针p后移一位。

  • *(++p) -------- 指针p先后移一位,之后访问指针p所指存储单元。

  • 由此可见,*(p++)的输出结果=*p
    *(++p)的输出结果=*(p+1)

例如:

  • 如果 char p[4]="123";
    *(p++) = '1';
    *(++p)= '2';

  • 这个++的前置和后置的区别
    ++p前置表示先自增后在返回值给变量
    p++后置表示先返回值给变量再自增

    int a =1;
    b = ++a; 相当于 a = a+1; b=a; 所以b=2
    b = a++; 相当于 b = a ; a = a+1; 所以 b=1


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式