。。。

  计算机常用部件

    CPU主板内存硬盘显卡、声卡、机箱、电源、显示器键盘、鼠标、音箱、摄像头、打印机。

               C语言----硬件知识(基础篇十三)_数据

    下面简单说明一下带下划线的设备:

      CPU:控制主板上各部件之间的工作,做加减乘除运算,存储运算结果。

      主板:各部件通过它来交换数据

      内存:临时存储数据,速度快,断电数据丢失,容量小,Windows XP时代约4G,C语言变量操作专用。

 

      硬盘:永久存储数据,速度慢,断电数据不丢失,容量大,Windows XP时代达到1T,C语言文件操作专用。

 

      显卡:掌管显示屏上显示的文字、图形、颜色、分辨率等等。

  程序执行流程

 

      int a,b,c;

 

      scanf(“%d%d”,&a,&b);

 

      c=a+b;

 

      printf(“%d\n”,c);

 

      int a,b,c;  

        CPU控制在内存中分配a、b、c这3个变量空间    

 

      scanf(“%d%d”,&a,&b);   

        CPU控制从键盘读入数据到内存   

 

      c=a+b;   

        CPU从内存a、b取出数据,在CPU内部将a、b相加后放回内存c  

 

      printf(“%d\n”,c);   

        CPU控制内存c中数据送至显卡,显卡控制显示器如何显示。

 

  地址

    电脑管理内存的方式是给每个存储单元编号(地址),在32位系统中可以编232=4G个号,所以32位系统最大只能装4G内存。

    如果是64位系统,理论上可安装264≈0.18*1020内存,相当于无限。

 

  内存计算

    ※前面我们学习了一个int型变量占4字节内存,那一个整型数组呢?

    同理,5个元素的double类型数组呢?

 

    程序1

      数组与内存关系

// 13-1数组与内存的关系
#include <stdio.h>

main()
{
    int a[3];
    int b[] = {1,2,3,4};
    double c[5];
    float d[2];


    printf("%d,%d,%d,%d\n", sizeof(a), sizeof(b), sizeof(c), sizeof(d));  //查询数组内存占用的字节

    printf("%d\n", sizeof(int), sizeof(double));     //也可以用 sizeof 函数直接查看类型所占的内存

}

 

 

    ※下面这个是我们熟悉的一个结构。你认为它会占用多少内存?

      struct student

      {

        char name[20]; /*姓名*/

        char sex[3]; /*性别*/

        int age; /*年龄*/

      };

 

  

    程序2

      结构与内存关系

      注意:结构的内存计算与#pragma pack(1)这句话息息相关。

// 13-2结构体与内存的关系
//

#include <stdio.h>
#pragma pack(1)        //字节对齐,若不写此命令输出的内存值不正确
main()
{
    struct student
    {
        char name[20];  //姓名
        char sex[3];    //性别
        int age;       //年龄
    };


    printf("%d\n", sizeof(struct student));
}

 

    程序3

      联合与内存关系

// 13-3联合与内存的关系
//

#include <stdio.h>
#pragma pack(1)       //字节对齐

union student
{
    char name[20];   //姓名
    char sex[3];     //性别
    int age;
};


int main()
{
    printf("%d\n",sizeof(union student));     //联合是属于单选,只选择最大的内存
}