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

How do I change the value of a variable using a dynamic pointer and a smart pointer?

本文关键字:指针 变量 改变 智能 何使用 动态      更新时间:2023-10-16

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

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

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

int *b = new int(a);

分配采用与CCD_ 2相同的的新CCD_。要指向a,只需使用

int *b = &a;

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

你不能通过猜测和实验来有效地学习C++。我建议你选一本好书。

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

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

演示。

当然可以,但行int *b = new int(a);采用了a副本。

int* b = &a;怎么了?

然后可以通过取消引用int0来操作a

智能指针在这里对您没有帮助,因为它们涉及到管理用new分配的东西的生存期您的指针指向一个具有自动存储持续时间的变量。