博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【原创】一起学C++ 之指针的--/++ ---------C++ primer plus(第6版)
阅读量:6931 次
发布时间:2019-06-27

本文共 965 字,大约阅读时间需要 3 分钟。

讲*和++同时用于指针时提出了这样的问题:将什么解除引用,将什么递增。

double arr[5]={
21.1, 32.8, 23.4, 45.2, 37.4 };double *pt=arr;    //pt指针指向arr[0] 值为 21.1++pt; //pt指针指向arr[1] 值为 32.8

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

*++p 的含义如下:

  先将++应用于pt(因为++位于*的右边)然后将*应用于被递增后的pt--》指针递增

double x=*++pt; //指针+1,指向arr[2] 值为23.4

++*pt 的含义如下:

  意味着先取得pt指向的值,然后将这个值再加一 ---》指向的值递增

++*pt; //指向的值+1   23.4+1=24.4

(*pt)++ 的含义如下:

  圆括号指出,首先对指针解除引用,得到24.4.然后,运算符++将这个值递增到25.4,pt仍指向arr[2]

(*pt)++;

*p++ 的含义如下:

 

x=* pt++;

 

  后缀运算符++的优先级更高,这意味着将运算符用于pt,而不是*pt,因此对指针递增。

  然而后缀运算符意味着将对原来的地址(&arr[2])而不是递增后的新地址解除引用,因此*pt++的值为arr[2],即25.4,

  但该语句执行完毕后,pt的值将为arr[3]的地址。

 

#include "stdafx.h"#include 
int main(){ using namespace std; double arr[5]={
21.1, 32.8, 23.4, 45.2, 37.4}; double *pt=arr; ++pt; int a; double x; cout<<*++pt<
>a;}

注意:指针递增和递减都遵循指针的运算规则,如果pt指向某个数组的第一个元素,++pt将修改pt的值(第一个元素),并指向第二个元素地址(第二个元素值不变)

 

转载于:https://www.cnblogs.com/holyson/p/3964115.html

你可能感兴趣的文章
corefile的设置与使用
查看>>
【转】记我的一次外包经历
查看>>
一个CMS案例实战讲解PHP代码审计入门
查看>>
Java 8 中 Date与LocalDateTime、LocalDate、LocalTime互转
查看>>
FineUIPro v3.5.0发布了,减少 90% 的上行数据量,15行代码全搞定!
查看>>
聊聊调试的事儿
查看>>
iOS中地图经纬度坐标转换
查看>>
vue-node-mongodb 写的简单的博客和后台管理
查看>>
Android人脸识别 SDK开发
查看>>
Spring Cloud Alibaba基础教程:Nacos的集群部署
查看>>
大话css预编译处理(三):基础语法篇
查看>>
一块GPU就能训练语义分割网络,百度PaddlePaddle是如何优化的?
查看>>
HBase 参考指南 3.0 翻译活动期待大家的参与 | ApacheCN
查看>>
canvas 拼图
查看>>
Golang 正则表达式(regexp)
查看>>
深入浅出谈Cookie
查看>>
命令行使用
查看>>
Java-001-面向对象
查看>>
日剧·日综资源集合(建议收藏)
查看>>
VuePress 静态网站生成
查看>>