【C】关于变量、地址、指针变量等关系的一点思考

版权声明:原创,还是不要转载了吧,如果忍不住要转载,就一定要注明地址哦! https://blog.csdn.net/Reborn_Lee/article/details/82152333

学习C语言,我们永远绕不开的就是指针,指针是一项伟大的发明,但是它给我们的理解也造成了困难。下面是我对变量、指针变量等的一些简单的思考。


变量

谈起变量,或许我们都不屑一顾,可是认真一想,发现坏了,变量到底是个啥?是一个容器?是一个地址的名字?还是?

关于变量,我们是可以把它形象地理解为一个容器,它可以存储一定的值。(事实上,变量就是用名字来代替地址而已,变量代替的地址对应的内存可以存储数值,这就相当于变量直接存储数值了。)

既然变量是代替地址的名字,那么变量也有一定的地址,在C语言中,我们定义一个变量,编译器会给它开辟一个地址,该地址对应的存储空间用来存储变量值(数值)。例如,静态变量的存储类型是普通内存,自动(auto)变量的存储类型是堆栈,一些频繁使用的自动变量的存储类型是机器的硬件寄存器,这是由编译器决定的。(这里说明一下,变量的存储类型是什么意思?变量的存储类型是指存储变量值的内存类型。)

当然,我们在写C语言代码时,我们并不知道我们创建的变量代替的地址具体为多少(我们也不需要知道)。

实际上,我们访问内存中的值是通过地址来访问的,也就是说,如果你记住了一个值的存储地址,以后就可以根据这个地址来取这个值。

但是,记住这些地址未免也太笨拙了,于是高级语言【c】提供了一种方法,就是通过名字来访问内存中的值,也就是用名字来代替地址,这些名字就是我们所说的变量。

注:变量与内存位置之间的关联并不是硬件所提供的,而是编译器为我们实现的。所有这些变量给我们一个方便的方法记住地址:硬件仍然通过地址访问内存位置。

总之,我们认为变量可以存储东西就好啦。

最后引用:c++ primer plus 

变量提供一个具名的,可供程序操作的存储空间。


指针

指针也就是地址。

指针变量

指针变量也是一个变量,只不过它是一个存储地址的变量。

猜你喜欢

转载自blog.csdn.net/Reborn_Lee/article/details/82152333