gpt4 book ai didi

c++ - int p = *(int *)i 和 int p = *(int *)&i 之间的区别

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:27:51 24 4
gpt4 key购买 nike

在最近的微软面试中提出了以下问题。

这两个声明有什么区别?

int p=*(int*)i; 
int p=*(int*)&i;

我认为第一个 i 是一个指针,第二个 i 是一个变量。
还有什么吗?

最佳答案

第一个是获取 i 中包含的值,将其视为指针,并检索该地址处的任何 int 值(如果可能)。

第二个获取 i 的地址,将其转换为指向 int 的指针,并检索该地址处的值。如果 i 是一个 int,它等同于 p=i;。如果不是,它将采用从 i 地址开始的第一个 CHAR_BIT *sizeof(int) 位,并(尝试)将它们视为 int,并将创建的任何值分配给 p

编辑:是的,作为@R。 Martinho Fernandes 指出,如果 i 有一个重载的 operator &,它可能会做一些与上面任何一个完全不同的事情(即,而不是 i 的地址 它将以其 operator & 返回的任何内容开始)。

关于c++ - int p = *(int *)i 和 int p = *(int *)&i 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11350096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com