c 中如何自己实现一个指针?

同学面试被问及这么一个问题,c 的基础很薄弱,同问

阅读 3.5k
3 个回答

指针这种机制是C语言编译器提供的。变量的地址(也就是指针变量的值)是在程序编译时由编译器分配的。
要问怎么实现?其实就是问运算符&*怎么实现的。

指针只是一种屏蔽地址的概念。是语言本身的问题,实现方式,你想怎么实现就怎么实现。只要满足这个feature即可。

*(int*)0xccccccccc = 0xff;

mov eax 0xccccccccc;
mov dword ptr [eax], 0xff

从汇编下来看,就是在地址0xcccccccc处写入0xff这个值。当然,汇编下当然是没有指针这种概念的。指针的语义就C的概念。

程序运行时,给变量分配好空间以后,用leal指令可以取得地址(csapp中有讲)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进