以前感觉对地址比较了解了,但是在学习了函数调用后,发现自己对有些概念是很模糊的。在学习函数调用,特别是在调用时用地址改变值的时候更是如此。如果对指针的概念没有明确的掌握,又加上调用的时候涉及到好几个知识点,是很难搞明白调用的过程以及函数调用时地址如何改变地址上的值。这里如果理解不好,对运用C语言解决问题有很大的阻碍。
所以首先要重复一下指针的知识,这个很重要,不能模棱两可,要有清晰的概念,否则再加其他知识解决问题,一下就糊了。数据是存在计算机的内存上的,内存是真实存在的,内存有标记,叫地址,找到地址就找到了内存,也就找到了数据,计算机处理数据基本上是处理地址。
下面通过上面的图来看看概念及关系,重要的事情说三遍,不但要搞清楚概念也要搞清楚关系,int a=5;int*p=&a;这个值是x,也就是说a是存于x上的,x是唯一的,x也等于指针变量p。
他们之间的关系是怎样的呢?首先要记住地址的唯一性,计算机中地址是x的内存是唯一的,用p可以对引用a的地址,可以对a进行任何操作。是怎么样操作的呢?p是a的地址,不是a,但是用去地址符,可以引用到a。要记住a的真实地址和地址值是一一对应的。
指针的指针又是什么呢?这个也需要理解并运用,可以定义一个指针的指针int**pp,这个pp中存着a的地址的地址,同样,通过pp可以对p(a的地址)进行任何操作)ÿ