【发布时间】:2012-07-05 18:11:33
【问题描述】:
在最近的一次微软采访中提出了以下问题。
这两种声明有什么区别?
int p=*(int*)i;
int p=*(int*)&i;
我认为第一个 i 是一个指针,第二个 i 是一个变量。
还有什么吗?
【问题讨论】:
-
任何足够高级的 diff 程序都会告诉你它是第 14 列的 & 符号。
-
i是如何声明的?如果是int,那么&i已经是int*类型,第二行中的转换是多余的。 -
这取决于 i 的类型。
-
如果不知道
i是什么,这个问题几乎毫无意义。如前所述,它只有一个答案:马蒂尼奥在上面的评论中给你的答案。