【C++学习笔记】13_指针的运算

本文详细介绍了C++中指针的运算,包括指针与整数的加减,同类型指针的比较以及同类型指针相减。指针与整数的加减涉及到指针在内存中的移动,而同类型指针之间的比较则是基于数值大小。此外,两个同类型指针相减得到的结果是它们之间内存字节的差值。在使用这些运算时,需要注意可能引发的内存访问问题,务必谨慎操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

指针的运算

C++常常把地址当成整数来处理,但这并不意味着程序员可以对地址(指针)进行各种算术操作,事实上,指针所能做的操作是十分有限的,像指针与其他变量的乘除、两个指针间的乘除、两个指针相加都是没有意义、不被编译器接受的。合法的运算具体包括以下几种:指针与整数的加减(包括指针的自增和自减)、同类型指针间的比较、同类型的两指针相减。

指针与整数的加减

指针与整数相加减,表示指针在内存空间中向下或向上移动整数个单位,该单位是多少个内存字节取决于指针所指变量的类型,short型指针每次移动2个字节,double型指针每次移动8个字节。

将指针变量增加1,其增加的值等于指向的类型占用的内存字节数。

下图是指针与整数相加减时指针移动的示意图,对指针变量进行加N运算时:

1

指针变量新值=指针变量当前值+ N*指针所指类型占用的内存字节数

 

同类型指针之间的比较

         C++提供的6种关系运算对两个同类型的指针依旧适用,两个指针比较的是数值大小,举例来说,两个指针变量p1和p2,p1的值为0X12345678,p2的值为0X12345679,则p1<p2成立。

 

同类型指针相减

两个同类型指针相减,返回值是个整数,其值可用下列公式计算:

(指针1的值-指针2的值)/指针所指变量占用的内存字节数

下面代码中,两个指针的值相减是18(十六进制),而int型在示例系统中占4个内存字节,所以返回结果为6。

代码示例【2】:

运行结果【3】:

注意:

         当指针间的差值不是指针所指变量占用内存的整数倍时,只保留整数部分。和“/”运算结果相同。

         在进行指针运算时,程序可能会意外地访问其他变量的内存空间,产生破坏性的后果,因此,谨慎使用指针运算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值