指针就是地址,长度为机器字长。理解三种符号 *(解引用) &(取地址) -> []优先级高于*
1.字符指针
![](https://i-blog.csdnimg.cn/blog_migrate/e27baaaffe668442808b1e8760c2bb04.png)
双引号引起来的是一个常量字符串 ,字符串的结束符是“\0”
2.指针数组(多用于二维数组)
它是数组,用来存放指针的。如:int *arr[] 就是用来存放整形指针的数组。
![](https://i-blog.csdnimg.cn/blog_migrate/44b4ed7e2eef5293c0413a459431e607.png)
3.数组指针
定义:int (*arr)[];是指向数组的指针,存放数组的地址
![](https://i-blog.csdnimg.cn/blog_migrate/b4c2669e13c8c56377a280a117984e1f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/74170013d393aa6fd43fa9b26596192a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a543ccd2bf76c777c238b49cc5ab7c78.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1093d469deb16c635bf5019c0f5c5979.png)
![](https://i-blog.csdnimg.cn/blog_migrate/10b864bba11b200807e79e28a82615c0.png)
4.数组传参,函数传参
![](https://i-blog.csdnimg.cn/blog_migrate/f0b04b2e1dab71de2deb63bdf654c48b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/04c8e0362457cf84f2c92ccd8492cf7c.png)
当参数是二维数组时,用指针变量做形参时,的用数组指针接收,因为传递过来的是二维数组的首行地址。
5.函数指针
指向函数的指针,存放函数地址的指针
![](https://i-blog.csdnimg.cn/blog_migrate/443053c47d7eaa7acfe8b75645d2601c.png)
6.函数指针数组
存放函数地址的数组 定义 int (* arr[])(int ,int);
![](https://i-blog.csdnimg.cn/blog_migrate/4d3e26d1514574792538a81c7338b026.png)
![](https://i-blog.csdnimg.cn/blog_migrate/25b92d114d4ebb10223133f303cda937.png)
7.回调函数
![](https://i-blog.csdnimg.cn/blog_migrate/2cf16446ecd89f72c2efd8df8401b48f.png)
8.指向函数指针数组的指针
![](https://i-blog.csdnimg.cn/blog_migrate/e9ad0c20ce33559e5523c12ca499d749.png)