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

double arr[]={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 <iostream>
int main()
{
using namespace std;
double arr[]={21.1, 32.8, 23.4, 45.2, 37.4};
double *pt=arr;
++pt;
int a;
double x;
cout<<*++pt<<endl;
cout<<++*pt<<endl;
cout<<(*pt)++<<endl;
cout<<*pt++<<endl;
x=*pt++;
cout<<x<<endl;
cin>>a;
}

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

【原创】一起学C++ 之指针的--/++ ---------C++ primer plus(第6版)的更多相关文章

  1. 【原创】一起学C++ 之指针、数组、指针算术 ---------C++ primer plus(第6版)

    C++ Primer Plus 第6版 指针和数组基本等价的原因在于指针算术! 一.指针 ⑴整数变量+1后,其值将增加1: ⑵指针变量+1后,增加的量等于它指向的类型的字节数: ⑶C++将数组名解析为 ...

  2. 【原创】一起学C++ 之->(箭头符号) ---------C++ primer plus(第6版)

    1.C++新手在指定结构成员时,不知道何时用.运算符,何时是用->运算符. 结论:如果结构标识符是结构名,则使用句点运算符:如果标识符是指向结构的指针,则使用箭头运算符. #include &l ...

  3. HTML5移动开发即学即用(双色) 王志刚 pdf扫描版​

    HTML5已经广泛应用于各智能移动终端设备上,而且绝大部分技术已经被各种最新版本的测览器所支持:逐一剖析HTML5标准中包含的最新技术,详细介绍了HTML5新标准中提供的各种API,各种各样的应用实例 ...

  4. 没事抽空学——c语言指针操作基础概念

    指针基础 理解指针的最佳方法是画图,学习使用基本指针,不要产生空指针. 存储控件分配 存储控件分配是指在内存预留空间的过程.就像一个虚拟菜谱一样,指针对应菜名,其所指的内存空间中的数据对应实际的菜. ...

  5. 【原创】一起学C++ 之 字符串 ---------C++ primer plus(第6版)

    C++ Primer Plus 第6版 字符串:是存储在内存的连续字节中的一系列字符. C++处理字符串的方式有2种: 一.来自C语言.常被称为C-风格字符串(C-Style-string) 1)从字 ...

  6. 【原创】一起学C++ 之enum ---------C++ primer plus(第6版)

    枚举 定义:在默认情况下讲整数值赋给枚举量,第一个枚举量的值为0,第二个枚举量的值为1,依次+1 一.定义一个枚举,枚举类型,枚举量 *与C#相比个人认为C++的enum不好一点是不能通过枚举名点其中 ...

  7. [网络必学]TCP/IP四层模型讲解【笔记整理通俗易懂版】

    OSI七层模型     表示层:用来解码不同的格式为机器语言,以及其他功能. 会话层:判断是否需要网络传输. 传输层:识别端口来指定服务器,如指定80端口的www服务. 网络层:提供逻辑地址选路,即发 ...

  8. 《C++ Primer》学习笔记 :命名空间的using声明

    最近在学C++,在<C++ Primer>第五版的3.1节中说到使用using声明来使用命名空间中的成员,<C++ Primer>中这样写道: 有了using声明就无须专门的前 ...

  9. Qt笔记-const-虚函数-元对象系统

    const与指针 摘自C++ Primer Plus (第五版) 中文版 const(常量): const变量的地址可以给指向const的指针,但不能指向常规类型的指针: const float a= ...

随机推荐

  1. Direct3D11-1 初始化

        在使用一个东西之前,我们需要初始化他,好比汽车加油,手机充电.于是我们采取平时的编码习惯,试图写下如下代码         Direct3D11 _direct3d11;     事实上,我们 ...

  2. Java并发包学习--ReentrantLock

    这个锁叫可重入锁.它其实语义上和synchronized差不多,但是添加了一些拓展的特性. A reentrant mutual exclusion Lock with the same basic ...

  3. jsp无法支持el标签及jstl标签

    在jsp页面头部添加如下 <%@ page isELIgnored="false"%> <%@ taglib uri="http://java.sun. ...

  4. PHP底层的运行机制与原理

    PHP说简单,但是要精通也不是一件简单的事.我们除了会使用之外,还得知道它底层的工作原理. PHP是一种适用于web开发的动态语言.具体点说,就是一个用C语言实现包含大量组件的软件框架.更狭义点看,可 ...

  5. LeetCode 268

    Missing Number Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one ...

  6. 【数值方法,水题】UVa 10341 - Solve It

    题目链接 题意: 解方程:p ∗ e^(−x) + q ∗ sin(x) + r ∗ cos(x) + s ∗ tan(x) + t ∗ x^2 + u = 0 (0 <= x <= 1) ...

  7. Tire树

    Trie树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种. 典型应用是用于统计和排序大量的字符串(但不仅限于字符串), 所以经常被搜索引擎系统用于文本词频统计. 字典树(Trie)可以保存 ...

  8. Linux系统内核制作和内核模块的基础

    Linux系统内核制作 1.清除原有配置与中间文件 x86:  make distclean arm:  make distclean 2.配置内核 x86:  make menuconfig arm ...

  9. C++函数学习笔记

    C++继承了C语言的全部语法,也包括函数的定义和使用方法. 调用其他函数的函数因为位高权重被尊称为主调函数,被其他函数调用的函数称为被调函数. 函数的返回值由return语句给出,return 表达式 ...

  10. Jersey(1.19.1) - Sub-resources

    @Path may be used on classes and such classes are referred to as root resource classes. @Path may al ...