## 什么是指针变量 - 在C语言中,允许用一个变量来存放其它变量的地址, 这种专门用于存储其它变量地址的变量, 我们称之为指针变量 ![](https://img-blog.csdnimg.cn/img_convert/02442ae9685e56146470369e56ca18ab.png) - 示例: ``` int age;// 定义一个普通变量 num = 10; int *pnAge; // 定义一个指针变量 pnAge = &age; ``` ![](https://img-blog.csdnimg.cn/img_convert/8b7b4d0976ad6e192e3ad6e26282fa8a.png) ## 定义指针变量的格式 - 指针变量的定义包括两个内容: + 指针类型说明,即定义变量为一个指针变量; + 指针变量名; ![](https://img-blog.csdnimg.cn/img_convert/c051703dcae8535c264ef47c20881b53.png) - 示例: ```c char ch = 'a'; char *p; // 一个用于指向字符型变量的指针 p = &ch; int num = 666; int *q; // 一个用于指向整型变量的指针 q = # ``` >+ 其中,*表示这是一个指针变量 >+ 变量名即为定义的指针变量名 >+ 类型说明符表示本指针变量所指向的变量的数据类型 --- ## 指针变量的初始化方法 - 指针变量初始化的方法有两种:定义的同时进行初始化和先定义后初始化 + 定义的同时进行初始化 ```c int a = 5; int *p = &a; ``` - 先定义后初始化 ```c int a = 5; int *p; p=&a; ``` - 把指针初始化为NULL ```c int *p=NULL; int *q=0; ``` - 不合法的初始化: + 指针变量只能存储地址, 不能存储其它类型 ```c int *p; p = 250; // 错误写法 ``` - 给指针变量赋值时,指针变量前不能再加“*” ```c int *p; *p=&a; //错误写法 ``` - 注意点: + 多个指针变量可以指向同一个地址 ![](https://img-blog.csdnimg.cn/img_convert/d4c9b29d8ddb808d1a12252fdcdf538a.png) - 指针的指向是可以改变的 ```c int a = 5; int *p = &a; int b = 10; p = &b; // 修改指针指向 ``` - 指针没有初始化里面是一个垃圾值,这时候我们这是一个野指针 + 野指针可能会导致程序崩溃 + 野指针访问你不该访问数据 + 所以指针必须初始化才可以访问其所指向存储区域 ![](https://img-blog.csdnimg.cn/img_convert/e38cdad483acddca8cfcd85e7ac0be78.png) ## 最后,如果有任何疑问,请加微信 **leader_fengy** 拉你进学习交流群。 开源不易,码字不易,如果觉得有价值,欢迎分享支持。