首页 理论教育 C++指针算术操作-零基础C++从入门到精通

C++指针算术操作-零基础C++从入门到精通

时间:2023-08-20 理论教育 版权反馈
【摘要】:因为计算后的指针不一定会指向具有有效数据的地址,所以我们在进行指针算术操作的时候需要格外小心。指针的各种操作都适用于数组名,但只有一点区别,那就是数组名不能被重新赋值。指针除了与整型的算术操作之外,还可以进行指针相减。动手写6.2.7动手写6.2.7展示了指针相减。运行结果如图6.2.8所示:图6.2.8指针相减指针相减返回的是指针地址之间的距离,并且是分正负的。

C++指针算术操作-零基础C++从入门到精通

指针可以像整型那样进行一部分算术操作,还可以对地址进行修改。因为计算后的指针不一定会指向具有有效数据的地址,所以我们在进行指针算术操作的时候需要格外小心。

动手写6.2.6

动手写6.2.6展示了指针与整型的算术操作,运行结果如图6.2.7所示:

图6.2.7 指针的算术操作

我们可以看到,指针与整型的算术操作不同于一般的数字加减,而是与指针的类型绑定的。由于一个int的大小是4字节,那么ptr+2会将地址加上8,在数组中就是指向第三个元素。在示例中,除了指针ptr,我们也对数组名arr做了加法,得到的结果都是第五个元素的值。此外,示例末尾的0042FE88已经比数组第一个元素的地址还小了,如果对这个地址解引用,可能会导致程序崩溃

提示(www.xing528.com)

数组名其实可以看作是指向数组第一个元素的指针。指针的各种操作都适用于数组名,但只有一点区别,那就是数组名不能被重新赋值。这也是很容易理解的,因为数组是静态的,数组名代表了当前作用域唯一的一个数组,不可能像指针那样指向其他地址。

指针除了与整型的算术操作之外,还可以进行指针相减。

动手写6.2.7

动手写6.2.7展示了指针相减。运行结果如图6.2.8所示:

图6.2.8 指针相减

指针相减返回的是指针地址之间的距离,并且是分正负的。这个距离也与类型绑定,单位是该类型数据的个数。指针之间不存在加法,每个指针代表的地址在计算机中都是唯一确定的,相加没有任何意义。这就好像门牌号码32减掉30得到的2,表示它们之间(包括30号)隔着两户,而32加上30却并不能代表什么。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈