gpt4 book ai didi

c++ - 打印 int 指针的值

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:38:43 25 4
gpt4 key购买 nike

我一直在研究这个,但我似乎无法让它正常工作。我正在返回一个指针列表的最后一个值,我想打印它,但它打印的是一个非常随机的数字。我假设这是指针的内存地址,但是当我取消引用它时,我的输出仍然做同样的事情。

我的指针列表是一个指针列表,例如:list<int*> pointerList

例如,这是我的方法返回:

int* end() { return (pointerList.back()); }

我就是这样调用它的。

int* totry = ca.end();
cout << *totry;

这是打印内存地址而不是值。有没有人知道如何解决这个问题?

提前致谢!

编辑:这是 int 指针指向的内容:我有一个值列表,例如 [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]我有一个指针列表,指向该列表的不同部分,如下所示:

[0,4,8,12]

我有代码:int* end() { return (pointerList.back()); }在我的头文件中,以及我的 .cpp 文件中的调用:

int* totry = ca.end();cout << *totry;


这就是我声明指针列表的方式

    class ptrList
{
public:
std::list<value_type> listOfValues;
std::list<*int> pointerlist;

我在一个“添加”函数中填充我的列表指针,我是这样做的:

int lstsqrt = 4;
for (int a = 1; a < lstsqrt; a++)
{
int endptr = a + (int)lstsqrt;
pointerlist.push_back((&*listOfValues.begin() + endptr)); //( (lstsqrt - 1) + a) );

}

这是我的 end() 方法

int* end() {return (pointerlist.back());}

然后将其传递到我的 toTry 变量。

最佳答案

一个问题可能是这一行:

pointerlist.push_back((&*listOfValues.begin() + endptr));

你的 listOfValuesstd::list ,因此它的值不存储在连续的内存块中。所以你得到一个指向第一个元素的迭代器 listOfValues.begin() , 用 * 取消引用迭代器, 取地址为 &得到一个int* ,然后添加一些指向内存中某处的值,您不知道它是什么。

尝试这样做:

pointerlist.push_back((&*(listOfValues.begin() + endptr)));

添加 endptr 的位置到迭代器(使其沿列表前进),然后取消引用并获取地址。实际上你可能需要使用 advance 而不是 + .

关于c++ - 打印 int 指针的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9237504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com