指针的基本运用一

指针,对于新人而言或许觉得很难,那么小编就想说明下,这是因为你接触的太少,其实指针也是有套路的。

首先,先看下指针是如何赋值的样式图:

&代表取地址。即&后面跟的不管是什么,他都代表一个地址。

上图简单明了,有两种int类型指针赋值方法。

从其中,我们能看出什么?

或许有人认为第二种方式更能懂一点,就是一个int类型指针p2等于a的地址。

那么第一种又该如何理解呢?

首先理解前,我们全得看编译器如何理解的,先打印下看看结果如何:

打印效果图:

我们从中能观察出,p他就是指针的地址。而*p才是真正的a值。

 大相径庭的说法就是:p是地址,存放6的地址,而*p变相于变量,因为他可以直接打印。

就像一座房子住六个人,这房子在某某村某某号,地址就是如同某村某号,类似这样的意思。

既然知晓了指针最基本的赋值法,我们继续深研一下。

我们如何将指针值改变下呢?或许有人会这样想吧,如下图。

 打印结果为:

是不是让人无语的打印结果,数字竟然莫名其妙的变为乱七八糟的数字。

就是说明了指针本身无法改变,很难理解?看看上图,编译器就是最好的结果。他无法打印成7.

那么如何才能打印呢?看下图:

打印结果:

是不是很简单的方法。

但是记住:前面说了指针如同房子地址,现在加入一个人或者两个人了,他的地址没变是可以肯定的了,还是原来的p。

那我们看看他a的值有没有变化?就是说房子里住几口人?打印结果:

咦,是不是很奇怪,我变动的是指针p的值,这跟a有什么关系呢?

这里就有一个概念性的规则。改变指针值,能改变该地址上变量的值,即a的值。

意思就是房子地址没变,房子里多了两人。

下面就来多个例子验证下,仔细看图,边写边打印,就是最好的效果图:

打印效果图:证明声明没有错误。

两个指针如何赋值呢?

打印效果图:证明交换地址没有问题。

记住:指针变量就是类似写法 int *p;一样。指针变量就是变量。

那么变量之间也可以赋值吗?试试就知道了,如下图:

 打印效果报错。有个警告。

改成这样后,照样能打印指针b的值,如下图:

打印效果:

那么又说明了一个概念性,地址只能和地址相交换,变量只能和变量间赋值。否则无法打印想要的结果。甚至报错。

 文字纯属于小编的见解,仅供参考用的,如有不妥,请见谅。

posted @ 2017-12-04 12:57  邪气凛然  阅读(316)  评论(0编辑  收藏  举报