在指针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&lt;int *&gt;,除非您已经将ints 存储在某个地方并且想要指向它们,这似乎不是这里的情况,即使那样它也是有问题(......或成为一名三星级程序员;) 有人说三星级程序员,**((*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 ++的向量中打印指针的值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在C中使用指针表示法迭代双指针[重复]

在c ++函数中返回地址和返回指针之间的区别[重复]

删除我的指针后内存内容没有被删除(在一个简单的例子中)[重复]

在一行中删除多个指针。 C++ [重复]

当存储非指针值时,C中实际发生了什么? [重复]

c编程中的悬空指针[重复]