【发布时间】:2011-12-10 13:49:38
【问题描述】:
假设在这种情况下,您希望在取消引用指向指针的指针后存储地址。将其取消引用为:
*(int **)(/* some void ptr */) = // some other address;
对
*(char **)(/* same void ptr */) = // some other address;
因为我知道当你取消引用一个指向 int 的指针和一个指向 char 的指针时,它们是完全不同的东西!但是在处理指向指针的指针时,中间有一层,由于所有指针(在同一台机器上)的大小相同,我想知道这两种方法是否有任何区别
->edit:你甚至可以用 unsigned ptr ptr、long ptr ptr 和 void ptr ptr 替换它,得到同样的东西吗?
【问题讨论】:
-
您唯一知道的是所有指针都可以转换为 void 指针。此外,您所做的是未定义的行为,除非您可以对“some void ptr”做出一些保证。