指针不可以相加,指针运算

原创 2011年01月24日 18:35:00

指针变量是有加减运算的,但是要注意以下几点:

 

1.指针变量中存放的是地址值,也就是一个数字地址,例如某指针变量中的值是0x20000000,表示表示此指针变量存放的是内存中位于0x20000000地方的内存地址。指针变量可以加减,但是只能与整型数据加减,此时加减的含义并不是其地址值进行了加减,也就是说如果指针变量p的值是0x20000000,那么p=p+2;的值并不是0x20000002,并不是地址值的简单相加,那么地址值加减多少是与指针指向的数据类型相关联的,如果在32位的操作系统上,p是指向整型数据的指针变量,那么p=p+2之后,p的地址值变成0x20000008,也就说实际上地址值加了多少呢:sizeof(int)*2这么多。说明白点,我们加减的数字是以指针指向的数据类型为量度的,P+2表示p在内存中前移两个int的距离,如果p不是int类型,而是其他类型道理也是一样。同样指针与整型数据相减也是同样的道理。

 

2.指针之间可以相减,但不可以相加:两个同一类型的指针变量是可以相减的,他们的意义表示两个指针指向的内存位置之间相隔多少个元素(注意是元素,并不是字节数),例如对于int类型的指针pp1. p1-p的意义表示他们之间相隔多少个int类型的元素。同样对于其他类型的指针变量之间相减的意义也是一样。 指针变量的自加和自减实际上是与整数1的加减运算。

 

3.指针之间可以比较大小。但是同样也限于两个相同类型的指针变量,不同类型的指针变量之间比较大小没有任何意义。指针之间的大小比较的意义,表示在内存中他们指向的位置的高低关系。

 

C++不可以返回局部变量的引用或指针

返回引用事实上是返回变量的地址。 所谓的不可以返回局部变量的引用或指针,指的是不能返回局部变量的引用或地址给引用或指针。事实上还是看该地址的位置是否在该函数的栈区,若是在栈区,函数调用结束,该地址就...

数据结构学习记录-两个链表相加之函数指针的运用

一个一元多项式相加,蕴涵的知识和编程心得 先定义头文件t11.h #include"stdio.h" #include"string.h" #include"ctype.h" #includ...

数组与指针运算

  • 2015年04月21日 17:17
  • 142KB
  • 下载

C语言中指针初始化和常规运算

指针初始化和指针间的常规运算。

关于“指针在任何情况下都可进行>, <, >=, <=, = =运算”的判断

在《求职之道》上看到了“指针在任何情况下都可进行>, =, ”的判断题, 脑中无解,便去百度搜了下,可是发现大多数人都说这个命题是正确的,当然也有不同意见的。 意见一: 指针是一个特殊...

【C++学习】——指针运算

今天又认真琢磨了一下指针,并且各种问啦!收获还是满大的,所以写下来,和大家一下讨论讨论。 定义 指针就是存储地址的变量。 所以一谈到变量我们就很好说了,变量有什么?一定要有数据类...

C 语言中指针变量的运算

声明:本文中所采用的代码来自郝斌老师的 C 语言视频。

C语言中指针和自增运算符结合时的运算顺序问题

查看原文章,请访问:http://blog.csdn.net/xingjiarong 在C语言中,当指针运算符和++或者–结合时很容易分不清运算顺序,在这里总结一下,下面一共分析6中组合: * ...
  • yyf0986
  • yyf0986
  • 2017年07月07日 14:21
  • 122

基础之路02,C语言中的指针之间的算术运算

指针pn1和指针pn2不能相乘或者相除,会出现编译错误。 指针pn1和指针pn2可以进行加减运算,运算结果是pn2和pn2的算术结果除以sizeof(类型)。 指针可以和常数相加相减,结果是指针+...
  • yxnot
  • yxnot
  • 2017年01月18日 14:38
  • 195
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:指针不可以相加,指针运算
举报原因:
原因补充:

(最多只允许输入30个字)