说起C++语言,我们就会想起C语言,不过C++是兼容C语言的,至少C++98是如此。
C++指针这些是新手认为很困难的东西,我们就来看看计算机的内存是什么样的,当然我也只是抽象化。
计算机的内存就是存放二进制数据的,在计算机中一切数据都是0或1这两个数字表示的。
计算机很笨,但是人类很聪明。
我们将不同的01组合代表了不同的东西,比如26个英文字母等。
内存,我将它理解为一个个格子线性排列起来
也可以理解为九宫格
而九宫格里面的一个个小格子就是我们所说的
1 byte 就是 一个字节 我们教科书上经常说
一个字节,八位比特。 1 byte = 8 bit。
这个意思其实就是
这九宫格里的一个小格子 里面加算机往里面所存放的数据就是 八个 0或1 组成的
比如 0000 0000 b ( 00 h) 1111 1111 b ( FF h)
计算机内存里面都是用十六进制表示的,那个h只是表示这数是十六进制的
b是表示这个数是二进制的
每个格子都是这八个01组合起来所表示的数
一个格子最大能显示的数就是 1111 1111 b (FF h)
知道了内存可以怎么想象后
下面说说 内存地址
地址很好理解 我们每个人的家所在地都有一份在人类间用于沟通的比较具体的地名
而内存地址 就是在计算机里存在的一份标号
可以这么想象 你现在在和一个拿着九宫格的人在玩游戏
游戏内容就是 你指挥她把16根小棒,颜色只有白黑,白的有8根,黑的有8根,放进你指定的九宫格的小格子中
现在你们开始玩游戏了
你和她说把 3根白色 5根黑色 左右排列 放到那个小格子中
她听后 问道 放到哪个?那个格子?怎么排列?
然后就这样你们因为沟通问题闹得不可开交,游戏也就没法进行了
但是这样当然不行 游戏我们是要玩下去的 不然很无聊
就这样聪明的你想出来了一个规则
把九宫格里的每个小格子都标上号
白色小棒代表 0
黑色小棒代表 1
格子中小棒的排列顺序按从左往右
纸条中写的01数字按从右往左读取
比如 你在纸条上写了 0100 1101 b
那就是 白黑白白 黑黑白黑
在九宫格里排列顺序就是 黑白黑黑 白白黑白
就这样规则敲定了 你们 有了顺序 有了摆放位置 游戏就这样运行下去了
通过这个游戏 大家应该明白了
每个小格子地址 就是九宫格上每个小格子的标号 是为了让你能找到特定小格子
而每个内存的标号 就是内存地址 是为了让计算机在庞大的内存池中找到特定位置的内存
内存池就是我们的九宫格 庞大的内存池 就是 庞大的九宫格
计算机只会很笨拙的在每个内存中写入 8个01组合的数字