a.什么是指针?指针就是地址,那地址是什么?地址就是每个内存单元的编号。
总结:指针就是内存单元的编号。
如图:形如0xFFFFFFFF,0xFFFFFFFE....这些就是地址,也就是指针。
b.什么是指针变量?
首先要理解什么是变量,变量就是内存中可以存放数据的一片空间。接下来再理解指针变量。说他是指针变量,那他首先肯定是个变量,其次前面加了指针二字,而指针就是地址(上面介绍过了),那合起来,指针变量不就是存放指针的变量,再简单来说指针变量就是存放地址的变量!
总结:指针变量就是存放指针(地址)的变量
c.什么是指针类型?
变量有不同的类型,比如int,float,double等类型,那么指针变量当然也有类型。
比如:
char *pc = NULL; int *pi = NULL; short *ps = NULL; long *pl = NULL; float *pf = NULL; double *pd = NULL;
指针类型有什么用呢?
如果你是int * 类型的指针变量,那你就可以存储int类型变量的地址。
它们都是互相对应的。
比如:
int a = 0; int* p = NULL; p = &a;
d.指针变量怎么用???它能干什么?
既然是指针变量,那首先你得给该变量存储一个地址,才能进行操作吧
int a = 0; //创建一个整型变量 int* p = NULL; //创建一个 存储整形变量地址 的 指针变量 p = &a; //将整型变量地址 赋给 指针变量
我们学会了给指针变量赋地址,那有什么用呢?能干什么呢?
指针变量是可以存储地址的,但是存储地址之后呢?当然是我们想办法通过地址来获取该变量,并对该变量进行相应的操作。
总结:通过指针变量可以改变原变量的值。
那如何通过地址去操作改变量呢?
接下来就得用到 * 操作符了,我们对指针变量进行 * 操作。对指针变量进行*操作的结果就是:我们可以通过改变(*指针变量)去改变原来变量的值。
不说废话,直接上代码
int main()
{
int a = 0; //创建一个整型变量
printf("a = %dn", a);
int* p = NULL; //创建一个 存储整形变量地址 的 指针变量
p = &a; //将整型变量地址 赋给 指针变量
*p = 100; // 改变(*指针变量)就等价于改变原变量
printf("a = %d",a);
return 0;
}
结果:
总结:也就是说,我们通过改变*p的值把a的值改变了,神奇吧!!!再解释一下原因,因为p中存储了a的地址,那么也就是说p指向了a,那么我们进行*操作时,也就是相当于对a进行操作,那么我们改变*p的值,也就是改变a的值。所以我们通过*p改变了a的值!!!



