0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

*++p和++*p有什么区别?

学益得智能硬件 来源:学益得智能硬件 2023-10-30 11:15 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

*++p 和 ++*p 有什么区别?

最近有同学在刷笔试题的时候,遇到这么一个问题。

#include 


int main()
{
    int array[5] = {0, 10, 20, 30, 40};
    int *p = array + 2;


    printf("%d
", *++p);
    printf("%d
", ++*p);


    return 0;
}
先是一个数组,然后有个指针,赋值是 a + 2,所以 p 指向了元素20。

49c12eba-76d2-11ee-939d-92fbcf53809c.png  

最后是两个输出语句,就是刚才说的 *++p 和 ++*p。

区别这两个表达式,很多同学会想到优先级,先算什么再算什么,但是因为前置++和后置++本身就有一个先算和后算的问题,再结合优先级,容易乱。

*++p 因为是前置的++,前置的特点就是在执行这条语句之前变量的值加一,所以先进行 p 加一的操作,p 指向了30。

49d3da74-76d2-11ee-939d-92fbcf53809c.png  

然后再结合星号,取到的值是30。

换一种写法,可能更好理解一些:
p = p + 1;
printf("%d
", *p);
++*p 也是前置的++,只不过这次加的对象是*p,所以这个地方*p加不加括号结果都一样。
++*p;
++(*p);
p指向30,对30加一就变成了31。

两个输出语句,一个输出30,一个输出31。
root@Turbo:test# ./test 
30
31
root@Turbo:test#
自己写代码的时候,不建议写这样的代码,过于复杂,给别人理解造成困难,有时候换个编译器,可能结果也不一样。

如果把它拆成两行来写,理解起来就会容易得多。

最后,我再加上一行代码,这样写应该输出多少?
#include 


int main()
{
    int array[5] = {0, 10, 20, 30, 40};
    int *p = array + 2;


    printf("%d
", *++p);
    printf("%d
", ++*p);
    printf("%d
", *p++);


    return 0;
}






审核编辑:刘清
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • printf函数
    +关注

    关注

    0

    文章

    31

    浏览量

    6226
  • Printf
    +关注

    关注

    0

    文章

    84

    浏览量

    14633

原文标题:*++p 和 ++*p

文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    请问jtag和jlink什么区别啊?

    jtag和jlink什么区别啊?
    发表于 11-28 06:46

    微波雷达和毫米波雷达什么区别

    微波雷达和毫米波雷达什么区别 前言:不知道大家有没有发现,各种雷达模块的使用开始逐渐加入各种智能家居产品了,像人来灯亮,人走灯灭这种雷达感应的产品早几年就开始进入市场了,还有各种感应开关等产品
    的头像 发表于 10-30 16:56 1317次阅读
    微波雷达和毫米波雷达<b class='flag-5'>有</b><b class='flag-5'>什么区别</b>

    浪涌保护器2P与1P+N的区别和行业应用详解

    电气设备被击穿或损坏。随着配电系统的多样化和接地方式的不同,浪涌保护器出现了多种结构形式,其中以 2P型 与 1P+N型 最为常见。它们在外形、内部结构、保护原理以及应用场景上均存在显著差异。地凯防雷将系统分析两者的区别、参数含
    的头像 发表于 10-11 15:25 305次阅读
    浪涌保护器2<b class='flag-5'>P</b>与1<b class='flag-5'>P</b>+N的<b class='flag-5'>区别</b>和行业应用详解

    Re-Driver 和 Re-Timer 什么区别

    Re-Driver 和 Re-Timer 什么区别
    发表于 08-21 06:14

    GD32与STM32什么区别

    电子发烧友网站提供《GD32与STM32什么区别.docx》资料免费下载
    发表于 04-03 17:27 0次下载

    网线cat5e 4p和4pr什么区别

    网线标识中的“CAT5e”和“4P”或“4PR”分别代表了网线的类别和内部结构,它们之间有着明显的区别,主要体现在以下方面: 一、网线类别:CAT5e 定义:CAT5e即超五类网线,是五类网线
    的头像 发表于 03-07 10:45 5651次阅读

    ATX主板和ITX主板什么区别

    在计算机硬件领域,主板是承载计算机核心组件的关键部件,其类型多样,性能也各有千秋。那么ATX主板和ITX主板什么区别呢,下面来介绍一下:
    的头像 发表于 03-03 08:47 1620次阅读

    DLP中video模式与pattern模式什么区别

    你好,请问,在DLP相关文档中,提到video模式与 pattern模式,请问这两种模式什么区别
    发表于 03-03 08:32

    私有云和公有云什么区别

    私有云和公有云在多个方面存在显著的区别,以下是具体的比较,主机推荐小编为您整理发布私有云和公有云什么区别
    的头像 发表于 02-20 10:38 1505次阅读

    AIGC和AI什么区别

    AIGC是AI在内容生成领域的一个特定应用方向,AI的技术发展为AIGC提供了基础和支撑。那么,AIGC和AI什么区别呢?下面,AI部落小编带您详细了解。
    的头像 发表于 02-20 10:33 1667次阅读

    电机几级怎么区分什么区别

    。例如,标注为“4/6”的可能表示四级电机,但具体还需根据电机制造商的标识习惯来判断。有时,铭牌上会直接给出磁极对数的信息,如“2P”表示两极电机,“4P”表示四级电机等。 测量电机铁芯长度 电机的铁芯长度与级数一定的
    的头像 发表于 02-01 16:50 1w次阅读

    TXB0102和TXS0102什么区别

    不明白TXB0102和TXS0102什么区别,还有那个能应用在串口通讯上,我想数据先经过3.3-5V在通讯
    发表于 01-14 07:36

    请问ADS8343和ADS8341什么区别

    请问ADS8343和ADS8341什么区别
    发表于 01-08 06:30

    LMP91200 VCM和VCMHI引脚什么区别

    VCM和VCMHI引脚什么区别,是说如果传感器是高阻态的需要接VCMHI 吗?
    发表于 12-31 07:36

    ads1292和ads1292R之间什么区别

    1、导联线连接上,社区内有两种不同的用法,不知什么区别?见下图 上图是TI评估板上给的 上图是社区内一位大哥给的 对比一下第一张图 IN2P连接到了ELL而第二张图IN2P连接
    发表于 12-20 12:56