一個表達式的結果如果是一個指針,那么這個表達式就叫指針表式。
下面是一些指針表達式的例子:
例七:
int a,b;
int array[10];
int *pa;
pa=&a; //&a 是一個指針表達式。
Int **ptr=&pa; //&pa 也是一個指針表達式。
*ptr=&b; //*ptr 和&b 都是指針表達式。
pa=array;
pa++; //這也是指針表達式。
例八:
char *arr[20];
char **parr=arr; //如果把arr 看作指針的話,arr 也是指針表達式
char *str;
str=*parr; //*parr 是指針表達式
str=*(parr+1); //*(parr+1)是指針表達式
str=*(parr+2); //*(parr+2)是指針表達式
由于指針表達式的結果是一個指針,所以指針表達式也具有指針所
具有的四個要素:指針的類型,指針所指向的類型,指針指向的內存區,
指針自身占據的內存。
好了,當一個指針表達式的結果指針已經明確地具有了指針自身占
據的內存的話,這個指針表達式就是一個左值,否則就不是一個左值。
在例七中,&a 不是一個左值,因為它還沒有占據明確的內存。*ptr 是
一個左值,因為*ptr 這個指針已經占據了內存,其實*ptr 就是指針pa,
既然pa 已經在內存中有了自己的位置,那么*ptr 當然也有了自己的位
置。