linux c 指针运算 指针表示法


c允许对指针进行运算,而计算出来的值会根据该指针引用的数据类型的大小进行调整。

也就是说,如果p是一个指向类型T的数据的指针,p的值为xp,表达式p+i的值为xp+L*i,这里L是一个数据类型T的大小。
单操作数的操作符&和*可以产生指针和间接引用指针。也就是,对于一个表示某个对象的表达式Expr,&Expr表示一个地址。对于一个地址表达式AddrExpr,*AddrExpr表示该地址中的值。
因此,表达式Expr *&Expr是相同的,等价的。
可以对数组和指针应用数组下标操作,如数组引用A[i]和表达式*(A+i)是一样的.它计算第i个数组元素的地址,然后访问这个存储器的位置。


例:
整数数组E的起始地址和整数索引i分别存放在寄存器%edx和%ecx,结果存放在%eax中。