- 已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
2天前关闭。
Improve this question
#include <iostream>
int main() {
// Write C++ code here
int *p = reinterpret_cast<int*>(50);
int q = 0;
q = *p;
std::cout << q;
return 0;
}
我想给int赋值一个int *。即使我正在重新解释强制转换以存储在int变量中,仍然显示分段错误。请帮助我解决这个问题
2条答案
按热度按时间tvz2xvvm1#
问题不在于
reinterpret_cast
,而在于这一行:你在这里尝试解引用一个地址为
50
的指针,这是一个无效的地址。如果你想赋值指针本身的值,你需要去掉解引用操作符*
,再使用一个reinterpret_cast
将指针转换回int
(或者更确切地说long int
)。但我不得不同意上面的评论:您可能只是在探索
reinterpret_cast
是如何工作的,或者可能做错了什么(取决于您想用这段代码实现什么)。rekjcdws2#
在上面的代码中,我给指针p赋值50,但它实际上是存储为p的地址。正如@drescherjm所说,我试图访问下一行的无效地址,因此返回分段错误。
将int* 复制到int的实际答案是,