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

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

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Linux进程管理和调度-基于linux3.10

在linux操作系统的主要目的是管理和分配硬件资源并为应用层提供一个良好的抽象接口。不论是内存管理子系统还是文件子系统亦或是网络子系统等都是为应用程序提供服务的,而应用程序映射到linux内核中称之为...

C++ 指针加减运算

注意: 如果两个指针不是指向同一个数组,对两个指针进行加减或者进行比较是没有任何意义的。 并且两个指针指向同一个数组,两个指针进行加减运算实际上是对数组中的元素进行加减或者比较运算的。 1) 指针变量...

指针与指针之间的减法运算以及比较运算

指针与指针之间可以做减法运算,前提是指针的类型要一致 指针与指针之间的减法运算,得到的结果是long类型的一个数,这个数表示这两个地址之间有多少个指针类型的值 指针与指针之间,只能做减法运算,不能做加...

一步一步写算法(之函数堆栈显示)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com 】     在继续图的讨论之前,我们今天开个小差,讨论一下函数堆栈的基本原理。有过编程...

一步一步写算法(之线性堆栈)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】   前面我们讲到了队列,今天我们接着讨论另外一种数据结构:堆栈。堆栈几乎是程序设计的命脉,没有...

一步一步写算法(之 算法总结)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】     自10月初编写算法系列的博客以来,陆陆续续以来写了几十篇。按照计划,还有三个...

关于C和C++一些大神们的讨论

知乎上曾经有一个关于C和C++语言的讨论,弄的沸沸扬扬。余天升 开源社区一直都不怎么待见C++,自由软件基金会创始人Richard Stallman认为C++有语法歧义,这样子没有必要、非常琐碎还会...

一步一步写算法(之堆排序)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】     堆排序是另外一种常用的递归排序。因为堆排序有着优秀的排序性能,所以在软件设计...

一步一步写算法(之线性队列)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】    这里的线性结构实际上指的就是连续内存的意思,只不过使用“线性”这个词显得比较专业而已。前...

一步一步写算法(之快速排序)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】     快速排序是编程中经常使用到的一种排序方法。可是很多朋友对快速排序有畏难情绪,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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