C语言笔记第四章指针表达式 |
|
www.nanhushi.com 佚名 不详 |
第四章 指针表达式 一个表达式的最后结果如果是一个指针,那么这个表达式就叫指针表达式。 下面是一些指针表达式的例子: 例六: 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当然也有了自己的位置。 一个表达式的最后结果如果是一个指针,那么这个表达式就叫指针表达式。 下面是一些指针表达式的例子: 例六: 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当然也有了自己的位置。
|
|
|
文章录入:杜斌 责任编辑:杜斌 |
|
上一篇文章: C语言程序设计(第6章指针)6 下一篇文章: C语言笔记第二章指针的算术运算 |
【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
|
|