位置:首页 > 软件操作教程 > 编程开发 > C语言 > 问题详情

C语言 内存编址

提问人:刘团圆发布时间:2020-12-01

计算机中的内存是由一个个的存储单元构成的,为了管理这些存储单元,对每个存储单元进行编号,这就是内存的编址。内存编址是按字节进行的,每个字节对应一个地址编号。当程序运行时,系统中会有一个内存分配表,每遇到一次变量声明语句(int、double……)或函数调用语句(函数中的形参),系统会根据变量的大小在内存中寻找合适的空间分配,并且在内存分配表中增加一行记录,记载变量与内存地址的对应关系。例如,有如下程序:

main()

{

    int a;

    char ch;

    double x;

    …

}

则该程序在内存中的内存分配表的近似形式如表所示。

ID

Name

Address

Length

1

a

2000

4B

2

ch

2800

1B

3

2300

8B

    例如,某宾馆有30个房间,每个房间都有自己的编号101、102、103……当有旅客需要住宿,服务台工作人员会查询宾馆的客房情况,并将合适的空房分配给旅客住宿。同时也将旅客住宿信息(身份证号、姓名、房间号等)登记下来。

    一个变量根据其类型不同在内存中所占的字节数也不同,例如char占1个字节、short占2个字节……变量在内存中的首字

节单元的地址称为该变置的地址。例如表11-1中,变量a在内存中的地址为2000,它在内存中占据2000~2003地址段,如图所示。若要访问变量a,只需到内存空间2000开始的位置去访问就可以了。

    可以看出i内存地址就是要访问变置的标识,所以将地址称为指针,也就是说,指针就是地址。

    变量的地址和变置的值是两个不同的概念。例如,张三去某宾馆住宿,他住在了301房间。那么可以认为301是变置的地址,而张三住在此房间中,张三就是此刻变量的值。变置的地址一旦被分配,在它作用域内其地址是不会改变的,而变量中的值是可以改变的。如301房间今天住的是张三这个人,而明天可能住的是李四。


继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部