C中的指针:指针变量是指存放地址的变量。也就是说指针变量存放的内容是它指向的变量的地址。举个例子
int a = 2;
int *p = &a;
*p = 3;
这个是一个很简单很简单的定义,但是它却能很好的去解释指针。在C中
我们定义一个变量的时候,会起一个变量名,然后给这个变量赋予一个数值。
就类似 int a = 2;这个是定义一个int 型的变量,变量的名字叫a,变量的
内容是2。但是计算机中存放这个变量的时候,是先给变量名a在内存中找一个
物理地址,比如是0x8000;(这个地址根据你的电脑是32/64位有区别的),然
后在这个地址上写上的是2这个数值。这样变量a也就在计算机中存在了,然后
再来解释int *p = &a;(&a是取地址的意思,实际上这句话是int *p;p=&a)
因为指针也是一个变量,所以它也有地址,比方是0x9000,也就是计算机中的
内存的地址是0x9000,然后它的内容就是a这个变量的地址,也就是0x9000
这个地址上方的是0x8000这个内容(这个你也可以理解为房子和房子里的东西,
然后对这个指针进行*运算,这个是将指针的指向的地址取出来,然后赋予3这个
数值,因为指针p指向的地址是0x8000,也就是对这个房子里的东西重新赋予一个
3的数值,又因为a这个变量对应的数值就是0x8000地址里边的数值,所以这样
a的数值也会发生变换,变成3了。
其实C语言中的变量名和变量名对应的数值,分别对应于计算机中的物理内存的地址和物理地址上存放的数值,地址存放的数值发送变化,变量的数值也就会发送变化,而指针的存放的内容就是这个地址,所以对这个地址操作也就是让这个地址的变量的数值发送变化。