【发布时间】:2012-03-27 16:26:08
【问题描述】:
我对指针有一些困惑。
我将所有这些都以问题的形式提出。
1) 编译器如何处理各种指针?
2) 编译器如何判断编译时传递的指针的数据类型?
据我所知,指针以无符号整数的形式存储在内存中,用于保存它所指向的对象的基地址。
现在,起关键作用的是符号表吗?
【问题讨论】:
-
什么告诉你编译器在运行时确定指针的数据类型?
-
这个问题有点混乱,但它表现出对正确事物的好奇心。为了帮助您集中问题,请考虑编译器,根据定义,在运行时不会解决任何问题,而只会在编译时解决。在已编译的 C 程序中,通常不可能确定运行时指向的对象的类型。相反,类型必须在编译时已知。在 C++ 中,有动态类型识别,但从你的问题的基调来看,我怀疑这就是你想要的。
-
@thb,好吧,实际上我认为,在词法分析阶段符号表形成期间的编译时,编译器会找出指针并写出有关类型的足够信息指针。我想知道这个的正确性。
-
小心假设指针是“真正的”无符号整数。它们通常以类似的方式表示,但最好将指针和 pointers 视为指针。例如,在某些系统中,指针在内部表示为基址和偏移量,两个不同的基址+偏移量对可以指向同一个内存位置。
标签: pointers compiler-construction compiler-theory