c++ 指针 区别

来源:百度知道 编辑:UC知道 时间:2024/06/22 15:29:38
abc是一个指针,
*abc + 1

*(abc+1)
有什么区别?!

这是个运算优先级的问题,由于*运算的优先级大于+,于是*abc+1先取出abc里面的内容,再进行+1运算,结果就是abc内存储的值加1;
而()会改变运算顺序,先算abc+1,这是将指针abc向下移了一位,再作*运算,也就是取出了指针abc所指位置下一个位置里面存储的内容,这个运算一般只在数组中进行,因为如果是任意的一个指针,将它移到下一位是没有意义的。

*abc + 1 先取abc指针指向的存储单元中的内容,再把内容加1
例如abc指向的单元中内容是5,则5+1=6=*abc + 1
*(abc+1) 指针先+1,指向原abc的下一个存储单元,如abc本来指向00H这个单元,+1表示指向01H存储单元,再从01H中取内容。

一楼的回答已经正确,我这里举个例子给你.
假设abc是一个char指针,例如char *abc = "abc\0";,则abc指向字符串abc的地址.
那么 *abc = "abc\0";
由于每个char占有一个字节的位置.而(abc+1)指向字符串abc的地址+1,所以*(abc+1) = "bc\0"
其中\0为字符串结束标记.

这简单,一个是指针加一,一个是ABC+1的指针