首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用动态指针和智能指针更改变量的值?

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

Stack Overflow用户
提问于 2016-01-05 16:55:41
回答 3查看 184关注 0票数 1

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

代码语言:javascript
复制
int a=5;
int *b= new int(a);
*b=10;

cout<< a;

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-05 17:07:43

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

代码语言:javascript
复制
shared_ptr<int> a { new int(5) };
cout<< *a << endl;
shared_ptr<int> b { a };
*b = 10;
cout << *a << endl;

演示。

票数 2
EN

Stack Overflow用户

发布于 2016-01-05 16:57:51

代码语言:javascript
复制
int *b = new int(a);

分配一个与a值相同的新a。要指向a,只需使用

代码语言:javascript
复制
int *b = &a;

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

通过猜测和实验,你无法有效地学习C++。我建议你拿起一本好书

票数 4
EN

Stack Overflow用户

发布于 2016-01-05 16:58:11

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

int* b = &a;怎么了?

然后,您可以通过取消引用a来操作b

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34617081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档