关于C++指针的加减法

本文记录了作者在阅读CSAPP第三章中关于数据表示部分的学习体验,重点探讨了指针的加减运算及其与指针类型的关系。通过测试代码,作者发现指针的地址增减取决于其指向的数据类型,如int指针按4字节,char指针按1字节变化。此外,还提到了C++中打印字符指针地址的注意事项,需要使用static_cast<void*>避免重载。在释放内存时,若指针已丢失有效地址,需要适当调整才能正确删除。
摘要由CSDN通过智能技术生成

CSAPP第三章看到3.8了,这一节在讲关于数据的表示,其中提到了指针的运算,本来自己只是想实践一下加深点印象,没想到小小的测试程序还又学到了一些新知识,觉得有必要记录一下:
1、首先是正题,关于指针的加减法,所得结果与指针所指的类型有关。例如指针指向int,那么加减都以4个字节为单位,如果指向char,那么加减都以1个字节为单位,下面是测试代码及运行结果的截图。可见整型指针地址增加了4,字符型指针地址增加了1
在这里插入图片描述
2、打印字符指针的地址时,如果也直接使用cout << b会打印出a和空字符,因为C++重载了>>会直接打印出字符串的值而不是地址,想要打印出指针的地址需要使用static_cast<void*>从而避免重载
3、这里使用delete时要注意,由于此时两个指针都已经没有指向内存了,所以需要将地址减一才能正确释放内存,否则会crash

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值