我的编程空间,编程开发者的网络收藏夹
学习永远不晚

*p++和(*p)++有什么区别

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

*p++和(*p)++有什么区别

本篇内容介绍了“*p++和(*p)++有什么区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

“*p++”和“(*p)++”的区别是:1、“*p++”示取p所指单元的值,p指向下一单元,即p自加1。“*p++”是指下一个地址。2、“(*p)++”是指将*p所指的数据的值加一。

本教程操作环境:windows7系统、C++17版本、Dell G3电脑。

区别:

*p++示取p所指单元的值,p指向下一单元,即p自加1。*p++是指下一个地址。

(*p)++是指将*p所指的数据的值加一。

C编译器认为*和++是同优先级操作符,且都是从右至左结合的,所以*p++中的++只作用在p上,和*(p++)意思一样;在(*p)++中,由于()的优先级比*和++都高,所以++作用在()内的表达式*p上。

比如有:

int x,y,a[]={1,2,3,4,5},*p=a,*q=a;

x=*p++;//执行这一句后x=a[0]=1,p=a+1

y=(*q)++;//执行这一句后,y=a[0]+1=2,q仍然=a

扩展资料:

验证程序1

#include"stdio.h"void main(){int a=2;int*p=&a;int*pold;//记录P指向的地址,为了作为比较使用pold=p;//-----------原来的信息printf("原来的a=%d",a);printf("原来的p=%x",p);printf("原来的pold=%x",pold);//----------进行变化printf("*p++的结果=%d,a的结果a=%d",*p++,a);printf("地址变化的结果p-pold=%x",p-pold);}

程序2

#include"stdio.h"void main(){int a=2,*p=&a,*q=&a;printf("%d%d",(*p),a);printf("%d%d%d%d",(*p)++,*p++,*q++,a);printf("%d",a);}

程序3:

#include"stdio.h"void main(){int a=2,*p=&a,*q=&a;printf("%d%d",(*p),a);printf("%d%d%d",*p++,(*p)++,*q++);p=&a;q=&a;printf("%d%d%d%d",a,*p,(*q)++,a);printf("%d%d%d%d",a,++(*p),++(*q),a);printf("%d",a);}

综上所述:

*p++是先取出*p的值,然后让p++

(*p)++是先取出*p的值,让这个值++

*(P++)是先取出*p的值,让p++

所以,*p++等价于*(P++)

而且printf的运行顺序是从右向左运行。而且右++是在整个运算表达式运算完才进行,而且右++的执行顺序是从左到右进行。而左++遇到变量就会立即增加变量的值。

验证printf的运算顺序

#include"stdio.h"void main(){int a=2;printf("a++=%d,++a=%d,a++=%d",a++,++a,a++);printf("a=%d",a);}

“*p++和(*p)++有什么区别”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

*p++和(*p)++有什么区别

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

*p++和(*p)++有什么区别

本篇内容介绍了“*p++和(*p)++有什么区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!“*p++”和“(*p)++”的区别是:1、“
2023-06-20

delete[] p->elems和free(p->elems)区别是什么

这篇文章主要讲解了“delete[] p->elems和free(p->elems)区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“delete[] p->elems和free(p-
2023-07-05

c语言中*p和p的区别是什么

区别:1、表示的含义不同,“*p”表示此指针指向的内存地址中存放的内容,“p”表示一个指针变量的名字,指此指针变量所指向的内存地址。2、输出的格式不同,“*p”输出的一般是一个和指针类型一致的变量或者常量,“p”输出的是一个16进制数, 输出一个指针的地址。3、功能不同,“*p”是让程序去那个地址取出数据,“p”用于存放的是地址。
2023-05-14

c语言中*p和p的区别有哪些

这篇文章主要讲解了“c语言中*p和p的区别有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“c语言中*p和p的区别有哪些”吧!区别:1、表示的含义不同,“*p”表示此指针指向的内存地址中存
2023-07-04

delete[]p->elems和free(p->elems)区别介绍

delete[]和free()都是释放内存的函数,但它们具有不同的使用方法和适用情况,这篇文章主要介绍了delete[]p->elems和free(p->elems)有什么区别,需要的朋友可以参考下
2023-05-14

C语言中*p+1和*(p+1)之间有什么不同

本篇内容主要讲解“C语言中*p+1和*(p+1)之间有什么不同”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言中*p+1和*(p+1)之间有什么不同”吧!区别是:1、*p表示此指针指向的内存
2023-06-20

cmd批处理中set /a和set /p的区别是什么

这篇文章将为大家详细讲解有关cmd批处理中set /a和set /p的区别是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在 SET 命令中添加了两个新命令行开关:SET /A expressionS
2023-06-08

HTML中<p>和<br>的区别有哪些

这篇文章主要为大家展示了HTML中


的区别有哪些,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“HTML中


的区别有哪些”这篇文章吧。html是什么html的全称为超文本

2023-06-06

html中p标签和h标签的区别

html 中 p 标签用于创建段落,而 h 标签用于创建标题。p 标签的语法为 ,而 h 标签的语法为 (n 为标题级别)。p 标签显示为缩进的文本,h 标签显示为较大、更粗的文本。此外,h 标签有不同的级别(1 到 6),可以创建目录结
html中p标签和h标签的区别
2024-04-27
2024-04-02

css p是什么元素

css p是指段落标签<p></p>,是块级元素,而块级元素就是默认撑满整行,之后的标签会显示在它下面,对应的行内元素是根据内容宽度自适应;<p>元素会自动在其前后创建一些空白,浏览器会自动添加这些空间。
2023-05-14

p在css中是什么意思

p 元素在 css 中表示段落样式,默认显示为块级元素,文本颜色为黑色,行高等于字体大小的 1.5 倍。可以通过 css 自定义 p 元素的样式,包括字体、文本颜色、对齐方式、边距和内边距等。CSS 中的 p 元素p 元素是 HTML 中
p在css中是什么意思
2024-04-28

Go在什么时候会抢占P

本篇内容主要讲解“Go在什么时候会抢占P”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go在什么时候会抢占P”吧! 调度器的发展史在 Go 语言中,Goroutine 早期是没有设计成抢占式的,
2023-06-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录