如何使用动态指针和智能指针更改变量的值?

时间:2016-01-05 16:55:42

标签: c++ pointers c++11

如何使用动态指针或智能指针更改变量的值?

int a=5;
int *b= new int(a);
*b=10;

cout<< a;

输出为5.我是否可以使用动态或智能指针更改“a”的值?

3 个答案:

答案 0 :(得分:4)

int *b = new int(a);

分配一个新的int,其{em>值与a相同。要指向a,请使用

int *b = &a;

我不知道为什么你在这里提到智能指针,它们没有相关性。它们通常用于管理已分配内存的生命周期,您不应该这样做。

您无法通过猜测和实验有效地学习C ++。我建议你pick up a good book

答案 1 :(得分:2)

您无法创建指向自动内存中分配的int的动态指针。如果您想使用动态指针,可以使用std::shared_ptr,如下所示:

shared_ptr<int> a { new int(5) };
cout<< *a << endl;
shared_ptr<int> b { a };
*b = 10;
cout << *a << endl;

Demo.

答案 2 :(得分:0)

当然可以,但第int *b = new int(a);行正在使用a副本。

int* b = &a;有什么问题?

然后,您可以通过解除引用a来操纵b

智能指针在这里不会帮助你,因为他们关心的是管理用new分配的东西的生命周期。 您的指针指向具有自动存储持续时间的变量。