C语言中的指定变量的内存地址址是不是不变的
来源:蜘蛛抓取(WebSpider)
时间:2017-04-26 11:41
标签:
指定变量的内存地址
我也是刚学C语言,对于比较细致的地方有点不懂。我想问的是,比如是在定义变量的候就在内存中申请并命名一个存储单元,而这个存储单元难道就是放在内存地址中的吗?帮我逻辑一下,定义... 我也是刚学C语言,对于比较细致的地方有点不懂。我想问的是,比如是在定义变量的候就在内存中申请并命名一个存储单元,而这个存储单元难道就是放在内存地址中的吗?
帮我逻辑一下,定义单元的原理,好ma ?
可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。
C语言中的内存地址和存储单元是什么概念
无符号的整数和有符号的正整数都是用二进制原码来表示,而负整数则是使用补码来表示(补码的算法:负数的绝对值的原码安位取反再加一)。举个例子来说吧:
假设机器使用的是16位来存储整数。
就好像超市存包的箱子,每一个箱子就是一个存储单元,你可以在里面放你的物品(相当于变量的值),每个箱子都有一个编号(相当于他的内存地址),一个变量通常占用一个以上的并且是连续的存储单元,而这个变量指向第一个单元(比如你把一张地图撕成几块放在编号为10~13的箱子里,而你只记得第一个箱子是10号,并且知道放了4个箱子),这个变量占用的所有内存空间才能表示他的值(你需要把4个箱子里的内容——也就是地图都拿出来才能看到完整的地图)
假定内存是由好多个方格组成(每个方格代表1位),当你定义了一个变量的时候,他会在内存空闲区域占一个区域(标示被占用,别人不能动了)。至于占多少个格,要受到你定义的变量类型影响。比如int型占用2字节就是8位,也就是8格,你变量的名字连接着这几个格子的第一个格子的位置。
引用的时候直接找第一个格子位置,然后取对应类型所需的格子。