• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 简单分析C++指针的操作和运算

简单分析C++指针的操作和运算

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++ 指针write,c++ 引用 指针,c++指针,c++指针详解,c++指针数组等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

既然指针是一种数据类型,那么它也应该有对应的操作或运算,正如整数能做加减乘除一样。但是每一种操作或运算都应该对这种数据类型有意义。比如两个实数可以用关系运算得知哪个大哪个小,而两个虚数却不能使用关系运算,因为比较虚数的大小是没有意义的。

  对于指针类型来说,可以使用的运算有:和整数做加法运算、和整数做减法运算、两指针做关系运算。很显然,指针类型的乘除法是没有意义的,也是不允许的。

指针的加减运算

  指针的加减法和数的加减法是不同的。我们认为,指针只能够和整数做加减法运算(包括和整型常量、变量做加减法和自增自减)。其实这也不难理解,内存的存储空间是按“个”计算的,不会出现半个存储空间的情况。那么,指针的加减法是否在地址值上做加减呢?我们先写一段程序来验证一下指针加减法的运算结果:(程序8.3)

#include "iostream.h"
int main()
{
  int a[5]={1,2,3,4,5};
  int *aptr=&a[0];//把数组首元素的地址给指针
  int i=1;
  for (int j=0;j<5;j++)
  {
   cout <<'(' <<aptr <<")=" <<*aptr <<endl;//输出指针内存储的地址和该地址的数据
   aptr=aptr+i;//指针和整型变量做加法
  }
  return 0;
}
</div>

运行结果:

(0x0012FF6C)=1
(0x0012FF70)=2
(0x0012FF74)=3
(0x0012FF78)=4
(0x0012FF7C)=5
</div>

  我们发现,每次做了加法以后,地址值并不是相差1,而是相差了4。所以指针和整数做加法并不是简单地将地址值和整数相加。我们又发现,每次做了加法以后,能够输出原先指针所指的下一个元素。根据数组在内存中的存储情况我们不难得出这样一个结论:指针和整数C的加减法是指针向前或向后移动C个对应类型的存储区域,即可以得到以下公式:
    新地址=旧地址±C*每个对应数据类型的变量在内存中所占字节数

  因为每个int变量在内存中所占字节数为4,所以在程序8.3.1中每做完一次加法,新地址=旧地址+1*4=旧地址+4。如右上图8.3所示。

指针的关系运算

  我们知道关系运算有等于、大于、小于、大于等于、小于等于和不等于六种。对于指针来说,等于和不等于就是判断两个指针的值是否相同或不同,即两个指针是否指向了相同或不同的地方。而大于和小于是判断指针的值哪个大哪个小。值较小的在存储器中的位置比较靠前,值较大的在存储器中的位置比较靠后。

以上所述就是本文的全部内容了,希望大家能够喜欢。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++中this指针用法详解及实例
  • 简单谈谈C++中指针与引用的区别
  • C++中指针和引用的区别详解
  • 总结C/C++面试中可能会碰到的字符串指针题
  • C++指针 详细介绍及总结
  • 深入理解c++指针的指针和指针的引用
  • 解析C++中指向对象的指针使用
  • C++中指针的数据类型和运算相关知识小结
  • 浅析C++中的函数与指针
  • 剖析C++编程当中指针作为函数参数的用法

相关文章

  • 2017-05-28C语言中获取文件状态的相关函数小结
  • 2017-05-28C++文件读写代码分享
  • 2017-05-28c++11新增的便利算法实例分析
  • 2022-04-30C语言指针变量的定义和使用(精华)
  • 2017-05-28C++取得当前时间的方法
  • 2017-05-28c++ 指针与引用的区别介绍及使用说明
  • 2017-05-28C语言编程时常犯十八个错误小结
  • 2017-05-28解析C++函数的默认参数和占位参数及较之C语言的拓展
  • 2017-05-28哈夫曼的c语言实现代码
  • 2017-05-28基于C语言实现五子棋游戏完整实例代码

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 详解C++编程中对于函数的基本使用
    • c++输出斐波那契数列示例分享
    • C语言中settimeofday函数和gettimeofday函数的使用
    • 深入串的模式匹配算法(普通算法和KMP算法)的详解
    • 用C语言求幂函数和指数函数的方法
    • c++通过引用实现三个数字求最大值
    • VC6.0常见链接错误与解决方法
    • C++编程中删除运算符与相等运算符的使用解析
    • C语言变长数组 struct中char data[0]的用法详解
    • 浅析C++11中的右值引用、转移语义和完美转发

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有