C/C++ 递增/递减运算符和指针

        可以将递增运算符用于指针和基本变量。本书前面介绍过。将递增运算符用于指针时。将把指针的值增加其指向的数据类型占用的字节数,这种规则适用于对指针递增和递减。

double arr[5] = {1.1, 2.1, 3.1, 4.1, 5.1};
double *ptr = arr;
++ptr;

        也可以结合使用这些运算符和*运算符来修改指针指向的值。将*和++同时用于指针时提出了这样的问题:将什么接触引用,将什么递增。这取决于运算符的位置和优先级。前缀递增,前缀帝建和解除引用运算符的优先级相同。以从右到左的方式进行结合。后缀递增和后缀递减的优先级相同。但比前缀运算符的优先级高,这两个运算符以从左到右的方式进行结合。

    前缀运算符的从右到左的结合规则意味着:

        double arr[5] = {1.1, 2.1, 3.1, 4.1, 5.1};
        double *ptr = arr;  // ptr当前指向arr[0]
        *++ptr的含义如下:先将++应用与ptr,然后将*应用与被递增后的ptr.
        ++*ptr的含义如下,先取得ptr指向的值,然后将这个值加1.
        (*ptr)++ 圆括号指出,首先对指针解除引用。然后运算符++将这个值递增1                              
        *ptr++ 后缀运算符++的优先级更高,这意味着将运算符用于ptr,而不是*pt,因此对指针递增。

示例源码:

// Len_ptr.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//#include <iostream>
using namespace std;int main()
{double arr[5] = { 1.1, 2.1, 3.1, 4.1, 5.1 };double *ptr = arr;cout << "ptr=" << ptr << ", *ptr=" << *ptr <<"		value:";for (int i = 0; i < 5; i++){cout << arr[i] << ", ";}cout << endl << endl;double data1 = *++ptr;cout << "*++ptr =" << data1 << ", ptr=" << ptr << ", *ptr=" << *ptr << "		value:";for (int i = 0; i < 5; i++){cout << arr[i] << ", ";}cout << endl << endl;double data2 = ++*ptr;cout << "++*ptr = " << data2 << ", ptr=" << ptr << ", *ptr=" << *ptr << "		value:";for (int i = 0; i < 5; i++){cout << arr[i] << ", ";}cout << endl << endl;double data3 = (*ptr)++;cout << "(*ptr)++ =" << data3 << ", ptr=" << ptr << ", *ptr=" << *ptr << "		value:";for (int i = 0; i < 5; i++){cout << arr[i] << ", ";}cout << endl << endl;double data4 = *ptr++;cout << "*ptr++=" << data4 << ", ptr=" << ptr << ", *ptr=" << *ptr << "		value:";for (int i = 0; i < 5; i++){cout << arr[i] << ", ";}cout << endl << endl;}

执行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/578693.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL | 概念 | 什么是OLTPOLAP?

什么是OLTP&OLAP&#xff1f; 大白话理解&#xff1a;业务系统都可以称作OLTP&#xff0c;基于业务系统产生的数据进行数据分析和决策的都可以称为OLAP。 OLTP OLTP&#xff08; Online Transaction Processing&#xff09;在线事务处理系统 用途&#xff1a; 用于支持日…

14.Unity中序列化

非字符串类型转字节数组 //关键类&#xff1a;BitConverter//所在命名空间&#xff1a;System//主要作用&#xff1a;除字符串的其他常用类型和字节数组相互转换byte[] byte1 BitConverter.GetBytes(100); 字符串类型转字节数组 //关键类&#xff1a;Encoding//所在命名空间&…

第十部分 欧拉图与哈密顿图

欧拉图&#xff1a; 历史背景&#xff1a; 哥尼斯堡七桥问题与欧拉图 问题提出后&#xff0c;很多人对此很感兴趣&#xff0c;纷纷进行试验&#xff0c;但在相当长的时间里&#xff0c;始终未能解决。而利用普通数学知识&#xff0c;每座桥均走一次&#xff0c;那这七座桥所有的…

软件架构的演进过程

软件架构的发展经历了由单体架构、垂直架构、SOA架构到微服务架构的演进过程&#xff0c;下面我们分别了解一下这几个架构。 一, 单体架构 一个归档包&#xff08;例如war格式或者Jar格式&#xff09;包含了应用所有功能的应用程序&#xff0c;我们通常称之为单体应用。架构单…

共模电容:又一款EMC滤波神器?|深圳比创达电子(下)

一、共模电容 1、结构特性 图7 共模电容结构示意 如图7&#xff0c;共模电容是在普通叠层电容基础上&#xff0c;结合3端电容中为降低电容ESL的优化设计&#xff0c;添加了一组GND&#xff1b;同时这组GND还有一定的屏蔽作用&#xff0c;可降低电极的边缘辐射。 2、电气特性…

力扣18 四数之和 Java版本

文章目录 题目解题方法代码 题目 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] &#xff08;若两个四元组元素一一对应&#xff0c;则认为两个四元组重复&am…

记一次redis内存没满发生key逐出的情况。

现象&#xff1a; 从监控上看&#xff0c;redis的内存使用率最大是80%&#xff0c;但是发生了key evicted 分析&#xff1a; 原因1、可能是阿里云监控没抓取到内存100%监控数据。 阿里控制台监控监控粒度是5秒。 内存使用率的计算方法。 used_memory_human/maxmemory 原因2、…

drf之路由

一 路由Routers 对于视图集ViewSet&#xff0c;我们除了可以自己手动指明请求方式与动作action之间的对应关系外&#xff0c;还可以使用Routers来帮助我们快速实现路由信息。 REST framework提供了两个router SimpleRouterDefaultRouter 1.1 使用方法 1&#xff09; 创建r…

自编码器的基本概念

这里写目录标题 全连接自编码器卷积自编码器正则自编码器:变分自编码器2. **VAE的改进&#xff1a;**3. **关键概念&#xff1a;**4. **目标函数&#xff1a;**5. **生成新样本&#xff1a;**6. **应用领域&#xff1a;** 全连接自编码器 自编码器是一种无监督学习模型&#x…

【c++】入门2

函数重载 函数重载&#xff1a;是函数的一种特殊情况&#xff0c;C允许在同一作用域中声明几个功能类似的同名函数&#xff0c;这 些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同&#xff0c;常用来处理实现功能类似数据类型 不同的问题。 c区分重载函数是根据参数…

搬运机器人RFID传感器CNS-RFID-01|1S的RS485(MODBUS|HS协议)通讯连接方法

搬运机器人RFID传感器CNS-RFID-01|1S支持RS485通信&#xff0c;可支持RS485&#xff08;MODBUS RTU&#xff09;协议、RS485-HS协议&#xff0c;广泛应用于物流仓储&#xff0c;立库 AGV|无人叉车|搬送机器人等领域&#xff0c;常用定位、驻车等&#xff0c;本篇重点介绍CNS-RF…

oracle数据库什么是表的死锁,死锁的产生原因,怎么查询死锁的表信息,解决死锁的方法;给出具体业务场景与代码示例

oracle数据库中表的死锁 一、什么是表的死锁以及死锁的产生原因二、产生死锁的案例三、查询死锁信息解决死锁问题1 . 查询死锁信息2. 解决死锁问题 四、查看具体被死锁的SQL语句 一、什么是表的死锁以及死锁的产生原因 表的死锁是指在Oracle数据库中&#xff0c;两个或多个事务…

Ubuntu20.04-查看GPU的使用情况及输出详解

1. 查看GPU的使用情况 1.1 nvidia-smi # 直接在终端得到显卡的使用情况 # 不会自动刷新 nvidia-smi# 重定向到文件中 nvidia-smi > nvidia_smi_output.txt# 如果输出的内容部分是以省略号表示的&#xff0c;可以-q nvidia-smi -q 1.2 nvidia-smi -l # 会自动刷新&#x…

我想开发一款即时通讯APP请问还有市场吗?

随着科技的飞速发展&#xff0c;人们对于沟通工具的需求也在不断升级。在这个信息爆炸的时代&#xff0c;一款优质的即时通讯APP不仅能满足用户日常沟通需求&#xff0c;还能在市场中占据一席之地。本文将探讨开发一款即时通讯APP的市场前景&#xff0c;以及如何抓住市场机遇。…

CleanMyMac X2024免费许可证及功能详细讲解

一些用户反映自己的CleanMyMac卸载不干净&#xff1f;你的卸载方式正确码&#xff1f;当你在Mac上安装使用CleanMyMac后&#xff0c;需要将软件卸载&#xff0c;你会使用怎样方法完成操作呢&#xff1f;小编今天主要讲解如何卸载CleanMyMac以及卸载这款软件时应该注意的事项。一…

YACS(上海计算机学会竞赛平台)一星级题集——空心正方形

题目描述 给定一个正整数 n&#xff0c;请打印一个空心的正方形&#xff0c;它的边界由 * 构成&#xff0c;每条边都恰好有 n 个字符。 输入格式 单个正整数表示 n。 输出格式 输出一个边界为星号、内部空心的正方形。 数据范围 3≤n≤50。 样例数据 输入&#xff1a;…

华纳云:怎么设置Fiddler来拦截Java代码发送的HTTP请求

Fiddler是一款用于调试网络流量的工具&#xff0c;可以拦截HTTP请求和响应&#xff0c;适用于多种编程语言&#xff0c;包括Java。以下是使用Fiddler拦截Java代码发送的HTTP请求的步骤&#xff1a; 步骤一&#xff1a;安装Fiddler 下载Fiddler&#xff1a; 访问Fiddler官网下载…

android实战之TextView多行靠左实现

<TextViewandroid:layout_marginTop"dimen/dp_20"android:layout_width"wrap_content"android:layout_height"wrap_content"android:text"保证金说明"android:singleLine"false"android:maxLines"10"android:s…

【华为数据之道学习笔记】6-6从“保姆”模式到“服务+自助”模式

数据服务解决了“可供应性”&#xff0c;数据地图解决了“可搜索/可获取性”&#xff0c;当消费方获取数据后&#xff0c;提供“可分析”能力&#xff0c;帮助数据消费者结合自身需要获取想要的分析结果。 过去&#xff0c;各业务部门的分析诉求往往通过公司总部“保姆式”开发…

SpringBoot 3.2.0 基于Logback定制日志框架

依赖版本 JDK 17 Spring Boot 3.2.0 工程源码&#xff1a;Gitee 日志门面和日志实现 日志门面&#xff08;如Slf4j&#xff09;就是一个标准&#xff0c;同JDBC一样来制定“规则”&#xff0c;把不同的日志系统的实现进行了具体的抽象化&#xff0c;只提供了统一的日志使用接…