C语言指针地址的问题
32位的程序指针应该是占用4字节16位的就是2字节应该是这样吧..至少我用sizeof显示的就是这样..问题是我看了下8086CPU关于内存访问是段地址*16+偏移地址那...
32位的程序指针应该是占用4字节
16位的就是2字节
应该是这样吧..至少我用sizeof显示的就是这样..
问题是我看了下8086CPU关于内存访问
是段地址*16+偏移地址
那么,指针里面的究竟什么地址?
32位的是Windows的,我不知道是不是还保留以前段地址这个东西
但是,16位的程序呢?如果指针只占用2字节,那么这2字节是什么地址?
如果是偏移地址,那段地址在哪里? 展开
16位的就是2字节
应该是这样吧..至少我用sizeof显示的就是这样..
问题是我看了下8086CPU关于内存访问
是段地址*16+偏移地址
那么,指针里面的究竟什么地址?
32位的是Windows的,我不知道是不是还保留以前段地址这个东西
但是,16位的程序呢?如果指针只占用2字节,那么这2字节是什么地址?
如果是偏移地址,那段地址在哪里? 展开
1个回答
展开全部
16 的C 一般分几种编译模式
(1) tiny: 程序和数据在一个64K字节的段内
(2) small: 独立的代码段(64KB)和独立的数据段(64KB)
(3) medium:多个代码段(1MB)和单个数据段(64KB)
(4) compack:单个代码段(64KB)和多个数据段(1MB)
(5) large:多个代码段(1MB)和多个数据段(1MB),数据指针不能跨越段边界,否则将回绕。
(6) huge: 多个代码段(1MB)和多个数据段(1MB),数据指针可以跨越段边界,不会回绕
通常我们都是用small模式,这种情况下,数据段地址固定,只用偏移地址足够了,指针式16位的,2字节
(1) tiny: 程序和数据在一个64K字节的段内
(2) small: 独立的代码段(64KB)和独立的数据段(64KB)
(3) medium:多个代码段(1MB)和单个数据段(64KB)
(4) compack:单个代码段(64KB)和多个数据段(1MB)
(5) large:多个代码段(1MB)和多个数据段(1MB),数据指针不能跨越段边界,否则将回绕。
(6) huge: 多个代码段(1MB)和多个数据段(1MB),数据指针可以跨越段边界,不会回绕
通常我们都是用small模式,这种情况下,数据段地址固定,只用偏移地址足够了,指针式16位的,2字节
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询