一個表達式的最后結(jié)果如果是一個指針,那么這個表達式就叫指針表式。
?
下面是一些指針表達式的例子:?
例六:?
inta,b;?
intarray[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)是指針表達式?
由于指針表達式的結(jié)果是一個指針,所以指針表達式也具有指針?biāo)哂械乃膫€要素:指針的類型,指針?biāo)赶虻念愋停羔樦赶虻膬?nèi)存區(qū),指針自身占據(jù)的內(nèi)存。
?
好了,
當(dāng)一個指針表達式的結(jié)果指針已經(jīng)明確地具有了指針自身占據(jù)的內(nèi)存的話,這個指針表達式就是一個左值,否則就不是一個左值。?
在例七中,&a不是一個左值,因為它還沒有占據(jù)明確的內(nèi)存。*ptr是一個左值,因為*ptr這個指針已經(jīng)占據(jù)了內(nèi)存,其實*ptr就是指針pa,既然pa已經(jīng)在內(nèi)存中有了自己的位置,那么*ptr當(dāng)然也有了自己的位置。