指针
在C语言中,可以使用指针对变量进行操作。
一个有意思的比喻是,把变量比作一个盒子,而把指针比作一个抽屉,
那么,一个不太恰当的例子是,当你想要盒子里的东西的时候,你可以直接找到盒子,当然,也可以先拉出抽屉来,而盒子,自然在抽屉里。
下面,则是正经的干货。
int n=3;
int *p=&n;
那么,他们则有如下的关系:
首先,系统会分配内存给n,假如它的地址是1H,里面存放的是3;
那么,当定义一个指针指向n时,就有一些有意思的事了。
同样的,系统也会分配一个地址给p,假设,p的地址是2H,那么,p
里存放的是n的地址,也就是1H,而当使用*p时,则是根据p中的地址,找到n,
取出n中所存放的数据,也就是3。
而二级指针,则是一个更加神奇的东东。
同样,咱们这么定义:
int n=3;
int *p=&n;
int **q;
n与p的关系同上,神奇的是,q。
n是一个盒子,p是一个抽屉,那么,q就是抽屉里的抽屉。
假如,p中存放的是n的地址,那么,q中则是存放的p的地址。
也就是说当我们使用*q的时候,得到的是p里面的内容,也就是
n的地址。而当我们使用**q的时候,得到的是n里面的内容,也就是3.
当然,定义q时,我们这么来:
q=&p;