用指针处理链表这是属于算法上的内容,会有专门的课程:数据结构、算法技巧与分析,算法的特点就是比较抽象,个人感觉,要学会善于画图和上机实践,当然,你最好得有扎实的语法基础,这样做起来才不会吃力。算法在程序设计当中是驾驭在语言之上,是整个程序的灵魂,要学会实在不容易。总之,1、多画图能够化抽象为简单;2、多上机实践能够加深对抽象的理解;3、拥有扎实的语法基础能够让你更容易上手。




指针其实是一个整形变量,与其它数据不同的是,它的作用是用来存储其它变量的地址,比如说
int a;
int *p = &a;
这里面,a是普通的整形变量,p则是指针,用来存储变量a的地址,
这样做的话,就可以很容易的找到变量a所在的位置,从而得到a的值



1:指针是一个地址,指向的是个类型:

我们知道,c语言中的类型有int,char,bool(这个不常用),一般我们使用int,char就可以满足一般的类型需求的,如果对于变量的长度过大,就是用long ,float,double,关于各个类型使用的的长度问题,可以使用sizeof(int)或者sizeof(long)来查看各个类型,在系统中的小。

而指针就是一个8个字节(64系统)。


exp_loading.gif


2:指针指向的是地址,地址指向的是内容:

我们需要一个变量,来存储地址,这个变量的值是地址,但是我们可以通过修改变量的值,来不断的改变地址,但是,我们如果需要改变该个地址的值的话,就需要,对地址的值进行修改,而不改变地址。


int a = 10;

int *p ;

p = &a;


*p =11;


a=?

这里我们看到,p 是一个变量,我们使用p来存储变量a的地址,这是,我们使用*p对于这个变量进行赋值,那么a的值最后,是多少呢,结果是11,因为我们使用*p赋值,就相当于a=11,赋值效果一样的。


3:指针的指针,是面对于指针的变量:

我们说,指针的指针的时候,就有点不清楚了,到底怎么区分指针和指针的指针呢。


char *p;

char **pr;

pr = &p;


我们这样看就清楚了一点,char *(*pr); *pr是一个存储的值为指针的变量,pr就是存储上个变量地址的变量。整合起来就是,pr是一个存储的值为指针的地址的变量。


这样,我们就基本,对于指针有一个直接的了解了。