如何使用动态指针或智能指针更改变量的值?
int a=5;
int *b= new int(a);
*b=10;
cout<< a;
输出为5.我是否可以使用动态或智能指针更改“a”的值?
答案 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;
答案 2 :(得分:0)
当然可以,但第int *b = new int(a);
行正在使用a
的值副本。
int* b = &a;
有什么问题?
然后,您可以通过解除引用a
来操纵b
。
智能指针在这里不会帮助你,因为他们关心的是管理用new
分配的东西的生命周期。 您的指针指向具有自动存储持续时间的变量。