Chinaunix首页 | 论坛 | 博客
  • 博客访问: 180183
  • 博文数量: 34
  • 博客积分: 2157
  • 博客等级: 大尉
  • 技术积分: 345
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-19 16:05
文章分类

全部博文(34)

文章存档

2011年(1)

2010年(33)

分类: C/C++

2010-10-19 16:26:57

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

下面是一些指针表达式的例子: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当然也有了自己的位置。

阅读(1729) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-10-19 20:21:57

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com