c语言地址到底是一个段还是一个点?比如int a,a的地址为0x1,这个1到底是什么?是表示内存里面地址的一个
答案:5 悬赏:20 手机版
解决时间 2021-12-31 00:46
- 提问者网友:城市野鹿
- 2021-12-30 03:01
是表示内存里面地址的一个点吗?还是我们人为的一种标记?有什么含义?哎,头疼,想不明白。哪位大神能给我细说下。感激不尽。到底地址是什么?
最佳答案
- 五星知识达人网友:不如潦草
- 2021-12-30 03:12
c语言地址是一个点,或叫“偏移量”(offset) 。程序里,每个变量都有不同的偏移量。
操作系统把程序装入内存时,临时分配一个区域,内存里面的真地址等于 临时分配的值+“偏移量”。
程序运行时,到真地址里去读写数据(取数,存数)。数据在运算器和寄存器里加工。
地址相当于门牌号码,便于寻找数据。
操作系统把程序装入内存时,临时分配一个区域,内存里面的真地址等于 临时分配的值+“偏移量”。
程序运行时,到真地址里去读写数据(取数,存数)。数据在运算器和寄存器里加工。
地址相当于门牌号码,便于寻找数据。
全部回答
- 1楼网友:空山清雨
- 2021-12-30 06:48
我个人觉得是一个点 就像我们住的楼房的门牌号 内存被分成许多许多许多的小房间 每个小房间都有自己的门牌号 小房间可以认为是 字节 (不知道准不准确) 可以组合成大房间 比如 int类型 在某些 编译器中 是 4字节(例如 VC6.0 和 CodeBlocks-G++) 这个大房子的是由四个连续的小房子连起来的 于是 编译器规定(这也是我猜的) 把大房子的门牌号 定为 组成它的第一个小房子的门牌号
呵呵 楼主 我这是形象的描述哈~
- 2楼网友:第幾種人
- 2021-12-30 06:33
第一个共占10字节,只能放2个int元素还多2字节
第二个能放10个
10*sizeof(int)和40,在32位系统下是一样的
- 3楼网友:走死在岁月里
- 2021-12-30 05:41
C语言里的地址表示一个点,一个点外加一个变量类型可以代表一块内存:从这个点开始,长度等同于这个变量类型的长度比如int是4个字节。
说简单点,比如你电脑里装了2个G的内存,这2个G的单位是字节(2GB),于是就给每个字节分配一个地址,第一个字节为0,最后一个字节为0x7FFFFFFF,中间怎么排自己脑内补完。
不过现代操作系统中地址没有那么简单,在windows下其实我上面说的那个是错(简化?)的。它有好几个概念的地址,之间互相转化,什么什么的,以后学了操作系统相关的知识以后会知道。初学者不用知道这么复杂,知道像我刚才说的那样的应该就够了。
- 4楼网友:行路难
- 2021-12-30 04:13
地址就是你家的门牌号,你们家的那条街比较长,就用4位数来表示,街比较短,就用2位数来表示。
所以你是32位的系统,0x1就是31个0,一个1。64位的系统,就是63个0,一个1。你学一门编程语言,就要有一定的思维方式,站在一定的抽象角度去学,等上手了,再关心底层的实现。
这些都是设计计算机的时候那些设计者的抽象,实际上根本没有地址这个东西,就是一些电路里的信号,高电平低电压什么的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯