完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
指针加上一个整数的结果是另一个指针。问题是:它指向哪里?
如果将一个字符指针加1,运算结果产生的指针指向内存中的下一个字符。 float占据的内存空间不止1个字节,如果将一个指向float的指针加1,将会发生什么? 它会不会指向该float值内部的某个字节呢? 幸运的是,答案是否定的。当一个指针和一个整数量执行算法运算时,整数在执行加法运算之前始终会根据合适的大小进行调整。这个“合适的大小”就是指针所指向类型的大小,“调整”就是把整数值和“合适的大小”相乘。例如:某台机器上,float占4个字节。在运算float型指针加3的表达式时,这个3将根据float类型的大小(此例中为4)进行调整(相乘)。这样实际加到指针上的整数值为12。 把3与指针相加使指针的值增加3个float的大小,而不是3个字节。 指针运算分为算术运算和关系运算。 算术运算只限于两个形式。 第1种形式是: 指针 ± 整数 标准定义这种形式只能用于指向数组中某个元素的指针。 这类表达式的结果类型也是指针。 数组中的元素存储于连续的内存位置中,后面元素的地址大于前面元素的地址。,因此,对一个指针加1使它指向数组中下一个元素,加5使它向右移动5个元素的位置,以此类推。把一个指针减去3使它向左移动3个元素的位置。 要注意的是,如果进行完加法或者减法运算后,指针指向的位置不在数组的范围内,则发生了数组越界。对这个指针执行间接访问,即解引用操作可能会失败。 第2种形式是: 指针 - 指针 只有当两个指针都指向同一个数组中的元素时,才允许从一个指针减去另一个指针。 两个指针相减的结果的类型是ptrdiff_t,它是一种有符号的整数类型。减法运算的值是两个指针在内存中的距离(以数组元素的长度为单位,而不是以字节为单位),因为减法运算的结果将除以数组元素类型的长度。 如果两个指针所指向的不是同一个数组中的元素,那么它们之间相减的结果是未定义的。 关系运算 对指针执行关系运算也是有限制的。用下列关系操作符对两个指针值进行比较是有可能的: < <= > >= 不过前提是它们都指向同一个数组中的元素。 当然,也可以在两个任意的指针间执行相等或者不相等测试,因为这类比较的结果和编译器选择在何处存储数据并无关系-------指针要么指向同一个地址,要么指向不同的地址。 |
|
相关推荐
|
|
不错!
|
|
|
|
|
|
一定要顶,呵呵
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
12131 浏览 2 评论
4466 浏览 3 评论
3696 浏览 5 评论
9524 浏览 47 评论
4499 浏览 9 评论
706浏览 0评论
507浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 08:15 , Processed in 0.559369 second(s), Total 57, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号