(4)让你不再害怕指针--指针表达式

一个表达式的结果如果是一个指针,那么这个表达式就叫指针表式。


下面是一些指针表达式的例子:


例七:


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 当然也有了自己的位置。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值