指针表达式是一个很重要的C语言中的概念,也是在实际的编程中要用到的一个很重要的东西,但是实际上我们在应用的时候,很容易出现理解上的问题,导致出现各种各样的问题。
指针的概念:一个表达式的最后结果,不是他自己本身,而是一个地址,那么这个地址表达式就叫指针。
下面就用指针的例子来进行说明:
例一:
inta,b;
intarray[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)是指针表达式  

1指针11.png

由于指针表达式的结果是指针,这里注意一下,这个不是结果,或者说不是真正的结果,因此指针表达式也具有指针的四个要素:指针的类型、指针指向的类型、指针指向的内存区域、占用的内存。
好吧,说的这么文绉绉的,其实指针的结果显示的是结果的内存地址,这个地址就是我们看到的物理地址,不是咱们之前写的程序的表达式的结果。