C语言基础入门48篇_32_指针铺垫知识:计算机分级结构(CPU<-->内存<-->硬盘、程序存储在硬盘,运行程序时,操作系统将程序拷贝到内存,通过总线读取内存数据)

本文详细讲解了计算机体系结构中的冯诺依曼和哈佛架构,阐述了CPU、内存、硬盘的角色,并重点介绍了内存工作原理和指针在程序中的关键作用。通过实例演示,揭示了内存地址和指针在C语言中的应用,以及内存布局对性能的影响。
摘要由CSDN通过智能技术生成

1. 计算机的体系结构


计算机采用的为分层结构,主要分为两种结构:

  • 冯诺依曼体系结构:绝大多数电脑的结构
  • 哈佛体系结构

虽然存在不同的结构,但主要的结构均采用以下三种的层次:
在这里插入图片描述

2. 程序运行时各个层次作用


(1) CPU是计算的核心,用于解析机器码和执行指令。CPU的数据处理能力非常快,但是(寄存器的)存储空间非常有限。
(2)内存的数据传输速度适中(与CPU、硬盘比),存储空间适中;
(3)硬盘数据传输速度慢,存储空间大,我们的程序数据一般都是存于硬盘。

总结: 硬盘传输速度太慢,如果直接从硬盘读取数据就会和CPU速度不匹配,采用内存作为折中方案,程序刚开始是躺在硬盘中,当运行程序时,操作系统会把硬盘中内容拷贝到内存中,CPU从内存中读取数据处理,这个过程实际上是CPU是通过总线读取内存数据

3. CPU运行过程


CPU可以(通过总线)直接操作内存,这样的能力体现在CPU指令上。实际上, 计算机的绝大多数功能,都是通过CPU操作内存直接体现的
其他的显示器、硬盘、打印机等是“外设”。因此,CPU如何定位内存、操作内存,非常重要。

4. 什么是内存


从硬件角度看,内存就是内存条, 从软件角度看

  • 每一个程序运行后,操作系统会分配一块空间给该程序,正在运行的程序的数据,绝大多数放在内存中;
  • 为了能够让CPU可以精确操作每一处内存,所有的内存都有编号,他们被称为内存地址;
  • 对于32位程序,内存地址的范围从0到0xFFFFFFFF,每个编号对应1字节的数据。

形象一些的比喻:内存是一个小区,内存地址是门牌号码

5. 指针的含义


C语言为了更好地表达内存寻址及数据处理的方式,发明了指针变量。 每一个指针变量中,都保存一个内存地址
按照以上的类比,如果内存是小区,内存地址是门牌号码,那么指针更像是名片。

int main(int argc, char* argv[])
{
    int nValue = 100;
    int* pValue = &nValue;
    printf("%p,%p\r\n", &nValue, pValue);
    return 0;
}

运行结果:两者的地址一致
在这里插入图片描述
内存中存储的数据
在这里插入图片描述

6. 学习视频地址:指针铺垫知识:计算机分级结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十月旧城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值