1、指针简单定义。
2、指针的类型。
3、野指针。
4、指针运算。
5、指针和数组的认识。
6、二级指针。
7、指针数组。数组
## 1、指针的简单定义 **指针是一种利用地址作运算的工具,它直接指向地址,经过它找到地址的内存单元。** **指针是个变量,存放内存单元的地址。 指针须要先定义,须要使用指针,也要为指针申请一个空间,指针的空间里放的事所指变量的地址。** >int a=5;//在内存中开辟一块空间 int* p=&a;//申请一个int指针,用&取a的地址赋值给指针。 //随后p表明a的地址,*p表明a的值,既*p=2; ## 2、指针的类型 **//要想存放地址,这个指针的大小就必须有足够的空间去存放其余地址, //对于32位系统,最大地址须要4个字节,64位系统须要8个....... //因此指针的大小都是4个字节。 //对于变量须要说明其类型,指针也是同样,指针的类型决定指针指向的也是一样类型, //不过经过强转能够指向不一样类型,既把其余类型的值转为指针类型。** >int *p=NULL;//既存放int类型变量的地址。 char *p=NULL; short *p=NULL; long *p=NULL; float *p=NULL; double *p=NULL; void *p=NULL;//无类型指针,能够将其它类型的地址值赋给它,但它不能随便赋值给其余类型。 //强转以下: int n=10; char *p=(char *)&n;//将int类型的变量地址强转为char类型。 //指针类型决定了,指针向前向后的移动距离。 ## 3、野指针 **野指针既指针指向的位置不知道。 缘由:指针未初始化、指针访问越界、指针指向的空间被释放。** ## 4、指针运算 >int a=10; int *p=&a; p++;//既对a地址向后加1; *p+1; //既对a的值+1; *p=5;//既将a的值改成5; 容许指向数组的指针在数组中比较位置大小。不能够与其它数组比较。 ## 5、指针和数组的认识。 >int arr[]={1,2,3,4,5};//arr为首元素,表明整个数组。 int *p=arr;//p存放的事首元素的地址。 p[0]=1; *p[0];//表示首元素地址 ## 6、二级指针 **指针变量也是变量,既指针的地址,指针p存放的是指向地址,指针p的地址就存放在ppa中, 既指向指针的的指针中。ppa既二级指针。 ## 7、指针数组** **是数组,都之后面的词为最终结果。 指针数组: 它首先是一个数组,这个数组,存放的是指针。** ### 数组指针: **首先它是一个指针,这个指针是指向数组的。**