让我先说一下,我是一个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;
不pointp
toj
。这将p
指向的值设置为j
的值。这是一个非常微妙的区别。要将p
更改为指向j
,正确的语法是:
p = &j;
但是,此时逻辑上不可能恢复原始指针。你必须先保存它:
int *old_p=p;
p = &j;
然后,在你打印出p
现在指向什么之后,你可以简单地恢复它:
p=old_p;
现在第二个print语句将显示p
指向的原始值。
根据我的理解,您试图获得j的内存位置,因此您可以使用"的"地址;(&)操作符,如std::cout>>j的内存地址= "在比;和j祝辞祝辞' n ', '