指向动态创建的内存



让我先说一下,我是一个c++新手,完全是新手,现在正在学校学习。我遇到的一个问题是动态创建的内存以及如何指向它。对于我的作业,我创建了内存,打印在控制台中,然后我的任务是指向我在作业开始时动态创建的内存。我怎么做呢?我必须创建一个临时变量或某种类型的引用变量,但我只是不确定如何。

// Task 1
//int *p;
int j = 18;
int *p = new int(2);
cout << "Dynamically created integer: " << *p << endl;
*p = j;
cout << "Named integer: " << *p << endl;
cout << "Return to dynamically created integer: " << *p << endl;
delete p;

倒数第二行,我有*p,这是不正确的,我只需要以某种方式指向第三行代码。谢谢你!

您对指针的工作方式有一点误解。我们在这里修改。

*p = j;

你认为这改变了p指向j。但事实并非如此。我们继续吧

cout << "Named integer: " << *p << endl;

你现在认为这显示了p现在指向什么。在下一行,您希望p指向它之前的位置。

除了p总是指向同一个东西,所有的时间。这条线:

*p = j;

pointptoj。这将p指向的值设置为j的值。这是一个非常微妙的区别。要将p更改为指向j,正确的语法是:

p = &j;

但是,此时逻辑上不可能恢复原始指针。你必须先保存它:

int *old_p=p;
p = &j;

然后,在你打印出p现在指向什么之后,你可以简单地恢复它:

p=old_p;

现在第二个print语句将显示p指向的原始值。

根据我的理解,您试图获得j的内存位置,因此您可以使用"的"地址;(&)操作符,如std::cout>>j的内存地址= "在比;和j祝辞祝辞' n ', '

相关内容

  • 没有找到相关文章

最新更新