关于指针占用字节数的疑问

aaahuanian 2012-04-13 10:47:11
int * float * char *为什么输出来都是占4个字节 系统对指针型的是怎么定义的?
...全文
380 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
aaahuanian 2012-04-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
原来是这样,就是指针指向的是一块地址,对指针变量进行sizeof就是相当于对这块地址所占的内存进行计算,求出该地址的字节数。对于单一的像 int char float long等是不同。
[/Quote]

老师的指导很让我受益匪浅,谢谢老师!
aaahuanian 2012-04-13
  • 打赏
  • 举报
回复
原来是这样,就是指针指向的是一块地址,对指针变量进行sizeof就是相当于对这块地址所占的内存进行计算,求出该地址的字节数。对于单一的像 int char float long等是不同。
Keepower 2012-04-13
  • 打赏
  • 举报
回复
char *p;

这条语句的信息是什么?定义了p是一个指针,指针干嘛用的?用来保存一个地址,这个地址值处保存一个char型的数据;
反正指针也是一个变量,不过它保存的值是地址值,该地址值的大小只跟操作系统有关(比如说32位的操作系统,sizeof(p)的值就是4字节了),跟红色部分的类型值无关。
wlxgkfj 2012-04-13
  • 打赏
  • 举报
回复
这东东和系统有关吧32位的就4个字节
yileisen 2012-04-13
  • 打赏
  • 举报
回复
中国各省市的规模,人口,经济文化都是不一样的,有的还相差很多,但邮政编码都是六位的吧,直辖市也不例外,你说对不?
Red_angelX 2012-04-13
  • 打赏
  • 举报
回复
32位系统指针就是4字节 龟腚
hs205118hs205118 2012-04-13
  • 打赏
  • 举报
回复
其存放的都是地址,所以相同吧!
loongee 2012-04-13
  • 打赏
  • 举报
回复
根据系统的内存地址范围来的。32位系统理论上可对0~4GB的地址直接寻址,也就是32位(4字节)。
64位系统就是8字节……
清风似水流 2012-04-13
  • 打赏
  • 举报
回复
指针的大小与系统有关。32位的是4个字节
赵4老师 2012-04-13
  • 打赏
  • 举报
回复
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
指针即地址。“地址又是啥?”“只能从汇编语言和计算机组成原理的角度去解释了。”

提醒:
“学习用汇编语言写程序”

“VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习C和汇编的对应关系。”
不是一回事!

不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧