Re: [问题] 指标型别的疑惑(赠送1000P)

楼主: descent (“雄辩是银,沉默是金”)   2016-09-19 19:29:36
※ 引述《wa007123456 (大笨羊)》之铭言:
: 开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
: VC++
: 额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
: 问题(Question):
: 我们都知道 为了要让指标能够正常运作
: 必须要宣告指标的型别
: 当指标在跳位置取值的时候 才不会跳错
: 但是小弟今天有一个疑惑
: "那储存指标的型别资讯是储存在计算器的哪一部分?"
: 也就是说 她怎么记得这个指标是属于哪个型别
int main()
{
int i, j;
}
编译器要为 i, j 在内存留个位置, 所以需要知道 int i, j 要给多大,
写 c 编译器的人就要去查 c 规格书, 哦 int 我留个 4byte 就符合规格了。
所以会把 0x100 留给 i, 0x104 留给 j。
那如果是 int *p, *q; 呢?
编译器要留 uintptr_t 的大小给 p, q, 假设 uintptr_t 是 4byte 好了,
所以把 0x108 给 p, 0x10b 给 p。
大小有了, 型别要怎么纪录呢? 用表格,
p, int *
q, int *
i, int
j, int
这样编译器就帮这些变量保留了大小, 也知道这些变量的型别。
0x100 ~ 0x10b 为虚构的位址, 依平台不同而不同。
作者: wa007123456 (大笨羊)   2016-09-19 21:39:00
太感谢你了^_^
作者: chuegou (chuegou)   2016-09-19 21:46:00
感谢帮推
作者: QQ29 (我爱阿蓉)   2016-09-20 09:41:00
请问一下 记录型别的目的是什么呢? 组译的时候要用吗了解 谢谢!

Links booklink

Contact Us: admin [ a t ] ucptt.com