浅谈指针的运算

         运算分为很多种:加减法,乘除法,等等;但是指针进行任意的运算都是合法的吗?

       答案我想大家都知道了:并非所有的运算在指针上都是合法的。加(减)法当然是大家最熟悉的了。一个指针加上一个整数(指针+整数),不多说了。大家都应该清楚。如果是指针减去指针(指针-指针)呢?答案是在某种情况下可以,怎么这样说呢?请看下面:

      只有两个指针都是指向同一个数组中的元素时,才能允许指针减去指针。两个指针相减的结果的类型是ptrdiff_t,它是一种有符号整形类型。减法运算的值是两个指针在内存的距离(以字节为单位),减法运算的结果除以数组元素类型的长度。这种差值的调整使得指针的运算结果与数据的类型无关。

     如果两个指针所指向的不是同一个数组中的元素时,那么他们之间的结果肯定是未定义的。(千万要小心!!!!!)

举个例子吧::::

for(i=&values[5];i>=&values[0];i--)//将数组元素全清为0

*i=0;

这个是代码是有问题的,但是大部分编译器是可以运行的。但是这不是好的写法,因为它不是c语言的标准规定的。具体是什么问题给大家一个悬念吧。哈哈!!!!!如果有谁看出来,给我留言


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值