指针　定义指针变量的语法格式:变量类型*　变量名(变量名前的符号‘*’表示该变量为一个指针)　eg:int　*p　指针变量的初始化　(1)接收变量的地址为其赋值,也可在定义时赋值　int　a=11;　//定义一个int型的变量a　int*　p;　//定义一个int*型的指针变量pp=&a;　//使int.型的指针变量p指向int型变量a所在的存储空间　int　a=10;　//定义一个int型的指针变量a,并初始化为10int*　p=&a;　//定义一个int*型的指针变量p,并初始化为变量a的地址　(2)与其他指针变量指向同一块存储空间　int*　p;　//定义一个int型的指针变量pp=q;　//使int型的指针变量p与q指向同一块存储空间　指针的引用　格式:*指针变量名　int　a=10;　int*　p=&a;　printf("%d\n",&a);　//输出指针变量指向的地址中存储的数据(间接访问)//printf("%d\n",a);　//直接访问　只能使用间接访问的场合　场合　原因　用户申请一块内存空间时　因为该空间没有对应的变量名,所以只能通过首地址对其进行访问　通过被调函数改变主调函数变量的值　由于值只能由实参向形参单向传递,所以被调函数无法通过改变形参的值去改变主调函数中变量的值,只能通过间接访问指针指向的内存空间来改变主调函数的值。　指针类型　(1)空指针(没有指向任一储存单元的指针)　int*　p1=0　//0是唯一一个不用转换就可以赋值给指针的数据　int*p2=NULL;　//NULL是一个宏定义,起作用与零相同　//在ASCLL码中编号为零的字符就是空　一般编程时,先将指针初始化为空,在对其进行赋值操作　int　x=10;int　*p=NULL;　//是指针指向空p=&x;　(2)无类型指针(使用该指针为其他基类指针赋值,必须先转换成其他类型的指针,　使用该指针,接收其他类型指针不需要强转　)　void*　p=NULL,*q;int*　m=(int*　)p;int　a=10;q=&a;　(3)野指针:指向不可用区域的指针。形成原因有以下两种:　指针变量没有被初始化。