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

2020-01-06 13:25:38于丽

易采站长站为您分析简单分析C++指针的操作和运算的相关资料,需要的朋友可以参考下

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

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

指针的加减运算

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

 

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

运行结果:

 

 
  1. (0x0012FF6C)=1  (0x0012FF70)=2 
  2. (0x0012FF74)=3  (0x0012FF78)=4