第四章 指針表達(dá)式
一個(gè)表達(dá)式的最后結(jié)果如果是一個(gè)指針,那么這個(gè)表達(dá)式就叫指針表達(dá)式。
下面是一些指針表達(dá)式的例子:
例六:
int a,b;
int array[10];
int *pa;
pa=&a;//&a是一個(gè)指針表達(dá)式。
int **ptr=&pa;//&pa也是一個(gè)指針表達(dá)式。
*ptr=&b;//*ptr和&b都是指針表達(dá)式。
pa=array;
pa++;//這也是指針表達(dá)式。
例七:
char *arr[20];
char **parr=arr;//如果把a(bǔ)rr看作指針的話,arr也是指針表達(dá)式
char *str;
str=*parr;//*parr是指針表達(dá)式
str=*(parr+1);//*(parr+1)是指針表達(dá)式
str=*(parr+2);//*(parr+2)是指針表達(dá)式
由于指針表達(dá)式的結(jié)果是一個(gè)指針,所以指針表達(dá)式也具有指針?biāo)哂械乃?BR> 個(gè)要素:指針的類型,指針?biāo)赶虻念愋停羔樦赶虻膬?nèi)存區(qū),指針自身占據(jù)的
內(nèi)存。
好了,當(dāng)一個(gè)指針表達(dá)式的結(jié)果指針已經(jīng)明確地具有了指針自身占據(jù)的內(nèi)存
的話,這個(gè)指針表達(dá)式就是一個(gè)左值,否則就不是一個(gè)左值。
在例七中,&a不是一個(gè)左值,因?yàn)樗€沒(méi)有占據(jù)明確的內(nèi)存。*ptr是一個(gè)左
值,因?yàn)?ptr這個(gè)指針已經(jīng)占據(jù)了內(nèi)存,其實(shí)*ptr就是指針pa,既然pa已經(jīng)在內(nèi)
存中有了自己的位置,那么*ptr當(dāng)然也有了自己的位置。
一個(gè)表達(dá)式的最后結(jié)果如果是一個(gè)指針,那么這個(gè)表達(dá)式就叫指針表達(dá)式。
下面是一些指針表達(dá)式的例子:
例六:
int a,b;
int array[10];
int *pa;
pa=&a;//&a是一個(gè)指針表達(dá)式。
int **ptr=&pa;//&pa也是一個(gè)指針表達(dá)式。
*ptr=&b;//*ptr和&b都是指針表達(dá)式。
pa=array;
pa++;//這也是指針表達(dá)式。
例七:
char *arr[20];
char **parr=arr;//如果把a(bǔ)rr看作指針的話,arr也是指針表達(dá)式
char *str;
str=*parr;//*parr是指針表達(dá)式
str=*(parr+1);//*(parr+1)是指針表達(dá)式
str=*(parr+2);//*(parr+2)是指針表達(dá)式
由于指針表達(dá)式的結(jié)果是一個(gè)指針,所以指針表達(dá)式也具有指針?biāo)哂械乃?BR> 個(gè)要素:指針的類型,指針?biāo)赶虻念愋?,指針指向的?nèi)存區(qū),指針自身占據(jù)的
內(nèi)存。
好了,當(dāng)一個(gè)指針表達(dá)式的結(jié)果指針已經(jīng)明確地具有了指針自身占據(jù)的內(nèi)存
的話,這個(gè)指針表達(dá)式就是一個(gè)左值,否則就不是一個(gè)左值。
在例七中,&a不是一個(gè)左值,因?yàn)樗€沒(méi)有占據(jù)明確的內(nèi)存。*ptr是一個(gè)左
值,因?yàn)?ptr這個(gè)指針已經(jīng)占據(jù)了內(nèi)存,其實(shí)*ptr就是指針pa,既然pa已經(jīng)在內(nèi)
存中有了自己的位置,那么*ptr當(dāng)然也有了自己的位置。
一個(gè)表達(dá)式的最后結(jié)果如果是一個(gè)指針,那么這個(gè)表達(dá)式就叫指針表達(dá)式。
下面是一些指針表達(dá)式的例子:
例六:
int a,b;
int array[10];
int *pa;
pa=&a;//&a是一個(gè)指針表達(dá)式。
int **ptr=&pa;//&pa也是一個(gè)指針表達(dá)式。
*ptr=&b;//*ptr和&b都是指針表達(dá)式。
pa=array;
pa++;//這也是指針表達(dá)式。
例七:
char *arr[20];
char **parr=arr;//如果把a(bǔ)rr看作指針的話,arr也是指針表達(dá)式
char *str;
str=*parr;//*parr是指針表達(dá)式
str=*(parr+1);//*(parr+1)是指針表達(dá)式
str=*(parr+2);//*(parr+2)是指針表達(dá)式
由于指針表達(dá)式的結(jié)果是一個(gè)指針,所以指針表達(dá)式也具有指針?biāo)哂械乃?BR> 個(gè)要素:指針的類型,指針?biāo)赶虻念愋停羔樦赶虻膬?nèi)存區(qū),指針自身占據(jù)的
內(nèi)存。
好了,當(dāng)一個(gè)指針表達(dá)式的結(jié)果指針已經(jīng)明確地具有了指針自身占據(jù)的內(nèi)存
的話,這個(gè)指針表達(dá)式就是一個(gè)左值,否則就不是一個(gè)左值。
在例七中,&a不是一個(gè)左值,因?yàn)樗€沒(méi)有占據(jù)明確的內(nèi)存。*ptr是一個(gè)左
值,因?yàn)?ptr這個(gè)指針已經(jīng)占據(jù)了內(nèi)存,其實(shí)*ptr就是指針pa,既然pa已經(jīng)在內(nèi)
存中有了自己的位置,那么*ptr當(dāng)然也有了自己的位置。
一個(gè)表達(dá)式的最后結(jié)果如果是一個(gè)指針,那么這個(gè)表達(dá)式就叫指針表達(dá)式。
下面是一些指針表達(dá)式的例子:
例六:
int a,b;
int array[10];
int *pa;
pa=&a;//&a是一個(gè)指針表達(dá)式。
int **ptr=&pa;//&pa也是一個(gè)指針表達(dá)式。
*ptr=&b;//*ptr和&b都是指針表達(dá)式。
pa=array;
pa++;//這也是指針表達(dá)式。
例七:
char *arr[20];
char **parr=arr;//如果把a(bǔ)rr看作指針的話,arr也是指針表達(dá)式
char *str;
str=*parr;//*parr是指針表達(dá)式
str=*(parr+1);//*(parr+1)是指針表達(dá)式
str=*(parr+2);//*(parr+2)是指針表達(dá)式
由于指針表達(dá)式的結(jié)果是一個(gè)指針,所以指針表達(dá)式也具有指針?biāo)哂械乃?BR> 個(gè)要素:指針的類型,指針?biāo)赶虻念愋?,指針指向的?nèi)存區(qū),指針自身占據(jù)的
內(nèi)存。
好了,當(dāng)一個(gè)指針表達(dá)式的結(jié)果指針已經(jīng)明確地具有了指針自身占據(jù)的內(nèi)存
的話,這個(gè)指針表達(dá)式就是一個(gè)左值,否則就不是一個(gè)左值。
在例七中,&a不是一個(gè)左值,因?yàn)樗€沒(méi)有占據(jù)明確的內(nèi)存。*ptr是一個(gè)左
值,因?yàn)?ptr這個(gè)指針已經(jīng)占據(jù)了內(nèi)存,其實(shí)*ptr就是指針pa,既然pa已經(jīng)在內(nèi)
存中有了自己的位置,那么*ptr當(dāng)然也有了自己的位置。