C语言笔记第四章指针表达式
第四章指针表达式
如果一个表达式的最终结果是一个指针,那么这个表达式就叫做指针表达式。
下面是一些指针表达式的例子:
例6:
int a,b;
int array[10];
int * pa;
pa = & a;//&a是指针表达式。
int * * ptr = & pa;//&pa也是指针表达式。
* ptr = & b;//*ptr和&b都是指针表达式。
pa = array;
pa++;//这也是一个指针表达式。
例7:
char * arr[20];
char * * parr = arr;//如果把arr看成指针,arr也是指针表达式
char * str;
str = * parr;//*parr是指针表达式
str = *(parr+1);//*(parr+1)是指针表达式
str = *(parr+2);//*(parr+2)是指针表达式
由于指针表达式的结果是指针,所以指针表达式也有指针所具有的四个
元素:指针的类型、指针所指向的类型、指针所指向的内存区域、指针本身所占用的
内存。
好吧,当一个指针表达式的结果指针明显有指针本身占用的内存
时,这个指针表达式就是左值,否则就不是左值。
在示例7中,&a不是左值,因为它没有占用显式内存。*ptr是一个左
值,因为指针*ptr已经占用了内存。其实*ptr就是指针pa。既然pa在
内存中有自己的位置,*ptr当然也有自己的位置。
如果一个表达式的最终结果是一个指针,那么这个表达式就叫做指针表达式。
下面是一些指针表达式的例子:
例6:
int a,b;
int array[10];
int * pa;
pa = & a;//&a是指针表达式。
int * * ptr = & pa;//&pa也是指针表达式。
* ptr = & b;//*ptr和&b都是指针表达式。
pa = array;
pa++;//这也是一个指针表达式。
例7:
char * arr[20];
char * * parr = arr;//如果把arr看成指针,arr也是指针表达式
char * str;
str = * parr;//*parr是指针表达式
str = *(parr+1);//*(parr+1)是指针表达式
str = *(parr+2);//*(parr+2)是指针表达式
由于指针表达式的结果是指针,所以指针表达式也有指针所具有的四个
元素:指针的类型、指针所指向的类型、指针所指向的内存区域、指针本身所占用的
内存。
好吧,当一个指针表达式的结果指针明显有指针本身占用的内存
时,这个指针表达式就是左值,否则就不是左值。
在示例7中,&a不是左值,因为它没有占用显式内存。*ptr是一个左
值,因为指针*ptr已经占用了内存。其实*ptr就是指针pa。既然pa在
内存中有自己的位置,*ptr当然也有自己的位置。
0条评论