【论指针(1)】指针引入

来源:互联网 发布:淘宝上的satya精油好吗 编辑:程序博客网 时间:2024/05/12 11:38

为什么要用指针?

我们知道内村中所有的数据都是有地址的,他们每一个的地址都是唯一,也就成了他们的标志!

当我们定义一个a=5时,在内村中会构成以下数据结构:

编号

a的数据

a

这是对于最普遍的定义,因为这种自定义好处是当我们定义了a=5后,我们不需要知道数据5在内村中的地址即编号,只需要引用符号a即可,其实真正的CPU运算是根据地址来的包括读数据、运行程序,都是CPU通过地址来获取相关数据的!当我们用上面这种方式定义的时候,CPU在我们引用a时,其实真正的操作是去通过地址找到这个数据5的!只是这种定义好处是我们不需要知道地址!

但是为了数据能普遍性和方便性操作,我们操作地址是最根本的解决方法,于是为此引入指针这个概念,从而能够对内村中的每一字节数据进行操作!

首先指针变量和其他的变量是一样的,也就是当我们定义一个指针变量时,它在内村中构成的数据结构也是跟上面的一样的,重点在于我们在表示的方法上不一样,

比如定义一个指针变量int *p,注意了,这里的指针变量是p,而不是*p,既然p是个变量,那跟其他变量一样,指针变量p的数据结构跟上面的一样:

编号

P的数据

P

 

所以当我们引用p时,其实只是拿出了p的数据,但这里加了要求,这个p的数据必须是其他数据的地址,由此p=其他变量的地址;而*这个操作就是取出这个地址所对应的数据;所以以后我们只要知道某个数据的地址,把他赋给一个指针变量,再通过*操作,就能知道该地址中的数据,这对于内村中数据的操作可是一劳永逸啊!

 

C语言是允许使用变量的地址的:

如 float x   变量x的地址----&x

int a[10]  数组变量的首地址---变量名a

 

所以我们注意几点:

当我们定义了一个指针变量int *p;

1.      指针变量是p,而不是*p

2.      p的数据是地址,所以赋值给p的数据必须是地址

3.      *操作是取出对应地址中的数据

 

根据上面的关系,我们只要知道数据的地址,然后把地址赋值给指针变量p,再利用*操作,就能操作任何内村中的数据了!这就是为什么我们要引入指针这个概念!

原创粉丝点击