指针,对于新人而言或许觉得很难,那么小编就想说明下,这是因为你接触的太少,其实指针也是有套路的。
首先,先看下指针是如何赋值的样式图:
&代表取地址。即&后面跟的不管是什么,他都代表一个地址。
上图简单明了,有两种int类型指针赋值方法。
从其中,我们能看出什么?
或许有人认为第二种方式更能懂一点,就是一个int类型指针p2等于a的地址。
那么第一种又该如何理解呢?
首先理解前,我们全得看编译器如何理解的,先打印下看看结果如何:
打印效果图:
我们从中能观察出,p他就是指针的地址。而*p才是真正的a值。
大相径庭的说法就是:p是地址,存放6的地址,而*p变相于变量,因为他可以直接打印。
就像一座房子住六个人,这房子在某某村某某号,地址就是如同某村某号,类似这样的意思。
既然知晓了指针最基本的赋值法,我们继续深研一下。
我们如何将指针值改变下呢?或许有人会这样想吧,如下图。
打印结果为:
是不是让人无语的打印结果,数字竟然莫名其妙的变为乱七八糟的数字。
就是说明了指针本身无法改变,很难理解?看看上图,编译器就是最好的结果。他无法打印成7.
那么如何才能打印呢?看下图:
打印结果:
是不是很简单的方法。
但是记住:前面说了指针如同房子地址,现在加入一个人或者两个人了,他的地址没变是可以肯定的了,还是原来的p。
那我们看看他a的值有没有变化?就是说房子里住几口人?打印结果:
咦,是不是很奇怪,我变动的是指针p的值,这跟a有什么关系呢?
这里就有一个概念性的规则。改变指针值,能改变该地址上变量的值,即a的值。
意思就是房子地址没变,房子里多了两人。
下面就来多个例子验证下,仔细看图,边写边打印,就是最好的效果图:
打印效果图:
证明声明没有错误。
两个指针如何赋值呢?
打印效果图:
证明交换地址没有问题。
记住:指针变量就是类似写法 int *p;一样。指针变量就是变量。
那么变量之间也可以赋值吗?试试就知道了,如下图:
打印效果报错。有个警告。
改成这样后,照样能打印指针b的值,如下图:
打印效果:
那么又说明了一个概念性,地址只能和地址相交换,变量只能和变量间赋值。否则无法打印想要的结果。甚至报错。
文字纯属于小编的见解,仅供参考用的,如有不妥,请见谅。