指针,顾名思义是指:指向某一个事物。在C语言里,指针可以简单的认为是指向变量的地址。
(1)在此之前,我们先认识两个概念:变量的地址,变量的值;编译器根据程序中定义变量的类型确定器所占空间的大小,然后返回分配的内存空间的首地址作为该变量的地址;而在变量所占存储单元中所存放的数据或值则为该变量的值;
(2)然后我们来认识一下对变量的访问方式:直接寻址,间接寻址;直接寻址,顾名思义就是使用变量名或使用变量的地址都可以直接引出变量的值;间接寻址:即通过某些中间商来访问变量。例如:int a=10;直接用变量名a表示变量的值就是直接寻址;而用地址访问就得先获取该变量的地址,此时需用到&,&a表示变量a在内存中所占存储单元的首地址(无需关心变量的值是多少),此时我们将&a赋给另一个变量p,p=&a,这就是间接寻址,即先通过访问变量p来获得a的地址值,然后再到该地址值代表的存储单元中去访问变量a。而这里我们将通过p引出我们本节的主角:指针。p不是普通的变量,它是特殊类型的变量,即指针类型的变量,简称指针变量,指针变量是C语言中专门用来存放地址型数据类型的变量。这种通过指针变量间接存放它所指向的变量的值的访问方式,称为间接寻址。
(3)认识了指针变量后,应该如何通过指针变量访问它所指向的变量的值呢? 接下来,先来认识两个单目运算符:&,* ;取地址运算符&用于得到变量的地址;指针运算符* 也称间接寻址运算符或解引用运算符,它是为了得到一个指针所指变量的值;例如p=&a,是获得变量a的地址;而*p=&a,则获得了变量a的值;但是,对变量进行解引用之前,要求指针已被正确初始化或者已经确认它已指向某个确定的内存单元,否则将引起一个致命的运行时错误,或意外篡改内存中的重要数据
(4)归纳总结:
指针变量是存储变量的地址,指针指向的就是变量的地址,通过指针变量间接存取它所指向的变量的值则是间接寻址,如果要得到变量的值则需要对该指针变量进行解引用。重中之重是,解引用之前,一定要对指针变量进行初始化
下一节我将分享如何对指针变量进行初始化,本人才疏学浅,如有错误,请指正。



