我正在努力处理一段C ++代码中的指针。不用多说了,让我告诉你我的一部分代码:
在file1.cpp
void *SomeClass::extract()
{
double foo = 3.14;
return (void*) &foo; // returns the pointer to a double
}
在file2.cpp
void * bar = SomeClass->extract(); // fetches the pointer to a double
fprintf(screen, "pointer address: %p \t value: %.3e \n", bar, (double*) bar);
(由于代码的大量过度简化,可能存在不一致。)我基本上想要做的是在foo
中打印出file2.cpp
的值,这是通过调用函数来检索的在file1.cpp
。当我比较foo
和bar
的指针地址时,我发现它们是相同的。但是当我想要取消引用指针时,我会变得虚伪。我怀疑我在解除引用时做错了什么,但是当我将它与代码的其他部分(我没有按照自己的方式编写)进行比较时,它似乎是有效的。
我知道这应该是非常基本的C ++,但不知何故它对我不起作用。如果有人能解释我如何正确地完成这项工作,我将非常感激。
马亭