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