c语言 指针
内存的基本单位是存储单元
一个存储单元占8bit,也就是1Byte
每一个存储单元都一个对应的地址
所谓地址,简单的将就是一个编号,可以理解为每个人的身份证号码一样
指针变量p和变量a的内存是在栈上创建的
两变量都占4Byte,即4个连续的存储单元
&p是指针p的首地址,也就是第一个存储单元的编号(地址)
&a是变量a的首地址,也就是第一个存储单元的编号(地址)
p = &a;的意思是将变量a的首地址赋给变量p,也可以说p保存了变量a的首地址
现在p和&a是一样的地址,那么相同的地址里所存放的内容自然也就一样
用*p或a就可以取该地址里所存放的内容
所以*p和a的内容是一样的
没有分配地址一说,只有分配内存,分配存储单元
地址,他的全称叫物理地址或逻辑地址,是由段基址和偏移量构成,由地址累加器合成物理地址,也就是说每一个存储单元都有一个对应的物理地址,他是规定好的,不存在分配,只有寻址一说
所谓寻址,就是指你所分配的内存的首地址,要看你的内存在什么上创建?(C语言有三种内存创建方式)是该内存的那一段?才能给你相应的首地址,也就是这块内存,这是由编译器决定的,不是你决定的
如果你有兴趣可以去学微机原理和编译原理,比较复杂,牵扯硬件和汇编,还有数电,它会让你更了解这些东西的
以你现在这个基础,只要记住我上面写的那些话就可以了,分清内存,存储单元,地址之间的关系就够了,其他的交给编译器去做,不需要你太多了解,慢慢去学,不可能一口是个胖子,这是一个过程
一个存储单元由若干个记亿单元组成,它可以存放一个存储字或若干字节。任何一个存储器都是由极多的存储单元所组成。而存储器的结构又决定了基本存储单元所必须具有的引线或端点的数量。为了区别存储器中的存储单元,存储单元还需要编址,即给每个存储单元一个唯一的标志。
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!