时间:2021-05-19
既然指针是一种数据类型,那么它也应该有对应的操作或运算,正如整数能做加减乘除一样。但是每一种操作或运算都应该对这种数据类型有意义。比如两个实数可以用关系运算得知哪个大哪个小,而两个虚数却不能使用关系运算,因为比较虚数的大小是没有意义的。
对于指针类型来说,可以使用的运算有:和整数做加法运算、和整数做减法运算、两指针做关系运算。很显然,指针类型的乘除法是没有意义的,也是不允许的。
指针的加减运算
指针的加减法和数的加减法是不同的。我们认为,指针只能够和整数做加减法运算(包括和整型常量、变量做加减法和自增自减)。其实这也不难理解,内存的存储空间是按“个”计算的,不会出现半个存储空间的情况。那么,指针的加减法是否在地址值上做加减呢?我们先写一段程序来验证一下指针加减法的运算结果:(程序8.3)
运行结果:
我们发现,每次做了加法以后,地址值并不是相差1,而是相差了4。所以指针和整数做加法并不是简单地将地址值和整数相加。我们又发现,每次做了加法以后,能够输出原先指针所指的下一个元素。根据数组在内存中的存储情况我们不难得出这样一个结论:指针和整数C的加减法是指针向前或向后移动C个对应类型的存储区域,即可以得到以下公式:
新地址=旧地址±C*每个对应数据类型的变量在内存中所占字节数
因为每个int变量在内存中所占字节数为4,所以在程序8.3.1中每做完一次加法,新地址=旧地址+1*4=旧地址+4。如右上图8.3所示。
指针的关系运算
我们知道关系运算有等于、大于、小于、大于等于、小于等于和不等于六种。对于指针来说,等于和不等于就是判断两个指针的值是否相同或不同,即两个指针是否指向了相同或不同的地方。而大于和小于是判断指针的值哪个大哪个小。值较小的在存储器中的位置比较靠前,值较大的在存储器中的位置比较靠后。
以上所述就是本文的全部内容了,希望大家能够喜欢。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
C/C++中*的用法1>最简单的乘法:a*b;2>可以注释:3>指针:(最重要)指针是指向变量的地址简单的例子分析:intmain(){inta=3;i
C++有关指针的数据类型和指针运算的小结前面已用过一些指针运算(如p++,p+i等),现在把全部的指针运算列出如下。1)指针变量加/减一个整数例如:p++,p-
C++this指针详解学习C++的指针既简单又有趣。通过指针,可以简化一些C++编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。所以,想要成
C++智能指针shared_ptr分析概要:shared_ptr是c++智能指针中适用场景多,功能实现较多的智能指针。它采取引用计数的方法来实现释放指针所指向的
AndroidJava如何调用自己的C++的类库下面以Java调用C++的加法运算函数为例,做简单说明。(使用AndroidStudio3编译)首先编译c++类