指针所指数组大小_C++入门篇(三十三),指针的操作

既然指针是一种数据类型,那它也应该有对应的操作或运算,正如整数可以做加减乘除一样。

但是每一种操作或运算都应该对这种数据类型有意义,比如两个实数可以用关系运算得知哪个大哪个小,而两个虚数却不能使用关系运算,因为比较虚数的大小是没有意义的。

对于指针类型来说可以使用的运算符有:和整数做加减法运算,两指针做关系运算。由于指针存储的是一个地址信息,因此指针类型的乘除法都是没有意义的,也是不允许的。

  • 指针的加减运算

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

1fac282fd72d89a32f492b946b32db4f.png

从上图中运行结果我们发现,每次做了加法以后,地址并不是相差1,而是相差了4所以指针和整数并不是简单的将地址值和整数相加。从运行结果还可以看出,每次做了加法以后,能够输出原先指针指针所指的下一个元素,根据数组在内存中的存储情况,不难得出这样一个结论,指针和整数i的加减法是指针向前或后移动i个对应类型的存储区域,既可以得到以下公式:

新地址=旧地址+i * 每个对应数据类型在内存中所占字节个数。

例如:int变量在内存中占用4个字节,按照上图的例子,每做一次指针加法,

新地址= 旧地址 + 1*4 =旧地址+4。

  • 指针的关系运算

很早我们就介绍了关系运算符有等于,大于,小于,大于等于,小于等于和不等于6种,对于指针来说,等于和不等于就是判断两个指针的值是否相同或不同,即两个指针是否指向了相同或不同的内存地址。而大于和小于就是判断两个指针的值哪个大哪个小。一般来说,值较小的在存储器中的地址位置比较靠前,值较大的在存储器中的地址位置比较靠后。指针的关系运算在数据结构中会经常用到,在后续我们还会重介绍它的用法。

本篇完,欢迎大家转发与收藏,下一篇《指针与保护》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值