在理解指针表达式之前先有一个概念就是“左值”和“右值”,对于左值就是可以出现在赋值符号左边的东西,右值就是那些可以出现在赋值符号右边的东西。进一步抽象可以这样理解:左值应该可以作为一个地址空间用来存放一个值,而右值可以作为一个值来处理,当然需要说明的是有些是既可以作为左值也可以作为右值的,例如:定义a为一个指针指向b,那么*a既可以作为一个右值即地址b中存放的数据,也可以作为一个左值即表示b的地址。其实说到这里就已经说明了一个简单的指针表达式了,那就是:*a。下边就再讨论一些其他的指针表达式。
首先做一个声明:
char ch = “a”;
char *cp = &ch;
其实这个声明很明了,这个声明声明了两个变量:ch和cp,cp作为一个指针指向ch。为了便于随后的说明,我现在做如下设想:cp变量地址为0x12,ch变量的地址为0x23,即现在空间cp中的内容为:0x23,ch中的内容为a字符。下边做一些表达式的