指针定义
int a = 1; //普通变量的定义
int *pA = &a; //指针的定义
或
int *pA = NULL;
pA = &a;
(1)变量pA的值等于变量a的内存地址。星号*的作用是表明变量pA是一个指针变量。
(2)指针的类型:把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。
1 、int*ptr;//指针的类型是int*
2 、char*ptr;//指针的类型是char*
3 、int**ptr;//指针的类型是int**
4 、int(*ptr)[3];//指针的类型是int(*)[3]
5 、int*(*ptr)[3];//指针的类型是int*(*)[3]
(3)指针所指向的类型:把指针声明语句中的指针名字和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型。
1、int*ptr; //指针所指向的类型是int
2、char*ptr; //指针所指向的的类型是char
3 、int**ptr; //指针所指向的的类型是int*
4 、int(*ptr)[3]; //指针所指向的的类型是int()[3]
5 、int*(*ptr)[3]; //指针所指向的的类型是int*()[3]
二级指针
一级指针保存的是数据的地址,二级指针保存的是一级指针的地址
指针数组与数组指针的区分
形式上两者唯一的区别就是()的存在,()直接影响了p的结合顺序。
(1)无()则p与[]首现结合构成数组,从而声明一个指针数组:int *p[3];指一个数组里面装着指针,也即指针数组是一个数组。
(2)有()则p与*首现结合构成指针,从而声明一个数组指针:int(*p)[3];指一个指向数组的指针,它其实还是一个指针,只不过是指向数组。