C语言精要总结-指针系列(二)

大学生就业培训,高中生培训,在职人员转行培训,企业团训

 

此文为指针系列第二篇:

C语言精要总结-指针系列(一)

C语言精要总结-指针系列(二)

指针运算

前面提到过指针的解引用运算,除此之外,指针还能进行部分算数运算、关系运算

指针能进行的有意义的算术运算包括加减法运算,但不包括乘除运算。并且运算存在诸多限制。

加法运算

指针加法运算只适合指针与整数,不能用在指针与指针。

指针加上或者减去一个整数n,是存储的地址值加上或者减去n*指针指向类型的空间大小。也就是

结果指针 = 指针 ±  n * 指针指向类型空间大小。

例如int类型的整数指针+1,运算结果依然是一个整型指针,其存储的地址值为原指针值+1*4,这是因为整型变量占用4个字节的空间。这个计算结果,恰好在当前指针指向基础上,向下偏移指向下一个相同类型的空间。如下图

 大学生就业培训,高中生培训,在职人员转行培训,企业团训

指针与整数的加减法一般用在迭代连续的内存空间-数组,如果运算得到的指针指向第一个元素之前或者最后一个元素之后,可能会产生非法读写内存中断,就像引用一个未初始化的指针一样不可预知。

指针除了可以与整数做加减运算,连个指针之间还可以做减法运算(不能做加法运算)且必须是同类型的指针。运算结果为两个指针指向地址之间,可以存放多少此类型的变量数(或其相反数),类型为ptrdiif_t类型(一种有符号整数类型)。

        		

网友评论