C语⾔中指针变量的加减运算
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类型的指针p和p1. p1-p的意义表⽰他们之间相隔多少个int类型的元素。同样对于其他类型的指针变量之间相减的意义也是⼀样。指针变量的⾃加和⾃减实际上是与整数1的加减运算。
3.指针之间可以⽐较⼤⼩。但是同样也限于两个相同类型的指针变量,不同类型的指针变量之间⽐较⼤
⼩没有任何意义。指针之间的⼤⼩⽐较的意义,表⽰在内存中他们指向的位置的⾼低关系。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论