一个表达式的最后结果如果是一个指针,那么这个表达式就叫指针表达式。
下面是一些指针表达式的例子: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=*...
这里&是取地址运算符,*是。。。书上叫做"间接运算符",也叫做"解引用"。比如 int *a;
&a的运算结果是一个指针,指针的类型是a的类型加个*,指针所指向的类型是a的类型,指针所指向的地址呢,那就是a的地址。
*p的运算结果就五花八门了。总之*p的结果是p所指向的东西,这个东西有这些特点:它的类型是p指向的类型,它所占用的地址是p所指向的地址。
例:int a=12; int b; int*p; int**ptr; p=&a;
&a的结果是一个指针,类型是int*,指向的类型是int,指向的地址是a的地址。
//*p的结果...
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。
先声明几个指针放着做例子:
例一: (1)int*ptr; (2)char*ptr; (3)int**ptr; (4)int(*ptr)[3]; (5)int*(*ptr)[4];
A. 指针的类型。从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。让我们看看例一中各个指针的类型:
...