在指针c ++的向量中打印指针的值[重复]
Posted
技术标签:
【中文标题】在指针c ++的向量中打印指针的值[重复]【英文标题】:Printing value of pointer in a vector of pointer c++ [duplicate] 【发布时间】:2018-01-29 16:36:48 【问题描述】:这是我的代码:
vector<int *> *ptr;
int *tab = new int(20);
ptr->push_back(tab);
cout << *(ptr->at(0)) << endl;
我想在屏幕上打印 20,但出现分段错误。 当我只使用时
vector<int *> ptr;
打印效果很好。我只需这样做就很容易得到结果:
*ptr.at(0);
但我想使用指针而不是简单的变量。 能给我一点启示吗?
谢谢
【问题讨论】:
这是一个问答网站。你需要的是一本基本的书/教程。这根本不是 C++ 指针的工作方式。 你想成为three-star-programmer 吗?如果是,您的方法很好,如果不是,您可以删除大部分*
我不明白你为什么要使用过多的指针层。
没有充分的理由拥有std::vector<int *>
,除非您已经将int
s 存储在某个地方并且想要指向它们,这似乎不是这里的情况,即使那样它也是有问题(......或成为一名三星级程序员;)
有人说三星级程序员,**((*ptr).data())
【参考方案1】:
暂时忽略使用指针的原因...
vector<int *> *ptr;
int *tab = new int(20);
ptr->push_back(tab);
这是一个问题,因为您没有为ptr
分配内存。
用途:
// Allocate memory for ptr first.
vector<int *>* ptr = new vector<int*>;
int *tab = new int(20);
ptr->push_back(tab);
【讨论】:
OP 的代码有很多问题,这个答案忽略了指出这些指针是必要的,并且泄漏内存可能对 OP 弊大于利。 @r-sahu :谢谢,现在说得通了。很清楚。 @patatahooligan 我认为 OP 的感谢评论证实了你的观点。以上是关于在指针c ++的向量中打印指针的值[重复]的主要内容,如果未能解决你的问题,请参考以下文章