鱼C论坛

 找回密码
 立即注册
查看: 3664|回复: 5

[已解决]关于指针的问题

[复制链接]
发表于 2021-4-27 12:52:38 | 显示全部楼层 |阅读模式
30鱼币
指针只占4个字节,那么能表示的地址数量应该和int的最大值一样,如果电脑内存很大,后面的内存不就不能用了吗?

但事实好像不是这样! 求解
最佳答案
2021-4-27 12:52:39
一个地址指向的存储空间有很多位,比如windows的64位,这样存储空间就可以有地址数*存储单元大小

最佳答案

查看完整内容

一个地址指向的存储空间有很多位,比如windows的64位,这样存储空间就可以有地址数*存储单元大小
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-27 12:52:39 | 显示全部楼层    本楼为最佳答案   
一个地址指向的存储空间有很多位,比如windows的64位,这样存储空间就可以有地址数*存储单元大小
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-27 13:09:56 | 显示全部楼层
是程序的最大寻址4G。你说的可能是物理内存,需要了解虚拟地址映射。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-4-27 13:18:47 | 显示全部楼层
Json21 发表于 2021-4-27 13:09
是程序的最大寻址4G。你说的可能是物理内存,需要了解虚拟地址映射。

我也不知道是什么内存,只是突发奇想。是程序的内存的话,不是又限制了程序的大小吗,求指点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-27 13:20:53 | 显示全部楼层
定义一个变量实际就是向计算机申请了一块内存来存放。
可以通过运算符&来取得变量实际的地址,这个值就是变量所占内存块的起始地址。
(PS: 实际上这个地址是虚拟地址,并不是真正物理内存上的地址)

我们可以把这个地址打印出来: printf("%x", &a);
大概会是像这样的一串数字:0x7ffcad3b8f3c

所以指针最大是0xffffffffffff,即是2^48=2^8T=, 所以暂时不会超过内存
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-27 19:19:50 | 显示全部楼层
了解单片机的话,就比较容易理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 15:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表