如何使用动态指针或智能指针更改变量的值?
int a=5;
int *b= new int(a);
*b=10;
cout<< a;输出为5。我是否可以使用动态或智能指针更改"a“的值?
发布于 2016-01-05 17:07:43
不能创建指向在自动内存中分配的int的动态指针。如果您想使用动态指针,可以使用std::shared_ptr,如下所示:
shared_ptr<int> a { new int(5) };
cout<< *a << endl;
shared_ptr<int> b { a };
*b = 10;
cout << *a << endl;演示。
发布于 2016-01-05 16:57:51
int *b = new int(a);分配一个与a值相同的新a。要指向a,只需使用
int *b = &a;我不知道你为什么在这里提到聪明的指针,它们没有关系。它们通常用于管理分配的内存的生存期,而您不应该这样做。
通过猜测和实验,你无法有效地学习C++。我建议你拿起一本好书。
发布于 2016-01-05 16:58:11
当然可以,但是行int *b = new int(a);采用的是a的值副本。
int* b = &a;怎么了?
然后,您可以通过取消引用a来操作b。
智能指针在这里不会对您有所帮助,因为它们与管理new分配的东西的生命周期有关。指针指向具有自动存储持续时间的变量。
https://stackoverflow.com/questions/34617081
复制相似问题