打印int指针的值
Printing the value of an int Pointer
我一直在处理这个问题,但似乎无法正常工作。我正在返回指针列表的最后一个值,我想打印它,但它打印的是一个非常随机的数字。我假设这是指针的内存地址,但当我取消引用它时,我的输出仍然会做同样的事情。
我的指针列表是指针列表,如: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<lt*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));
您的listOfValues
是std::list
,因此其值不会存储在连续的内存块中。因此,您将用listOfValues.begin()
为第一个元素获取迭代器,用*
取消对迭代器的引用,使用&
获取其地址以获得int*
,然后添加一些值,这些值指向您不知道它是什么的内存中的某个位置。
试着这样做:
pointerlist.push_back((&*(listOfValues.begin() + endptr)));
将endptr
添加到迭代器(以使其沿列表前进),然后取消引用并获取地址。实际上,您可能需要使用advance
而不是+
。
相关文章:
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 指针问题:从不兼容的类型"int"分配给"int *"
- 运行时错误:引用绑定到类型为"int"的空指针
- C++:将值 int(例如:0x00AAFAD8)转换为指针(指针本身也是 0x00AAFAD8 值)
- 如何将 int 指针转换为浮点指针
- 使用 int 指针的浮点数的位表示形式
- C++:使用没有位移位的指针将无符号字符转换为无符号 int
- 从类指针到 int 的转换无效
- f 是指向函数的指针,该函数采用 int,并返回指向不带任何内容并返回双精度的函数的指针
- 如何使用静态多态性在 int 和指针类型之间进行转换?
- 为什么当我尝试将char输入到int时,文件指针会卡住
- 类型别名允许分配任意指针,尽管 int* 是必需的
- 为什么 fdump-class-hierarchy 为虚函数提供了两个指针 int vtable
- 双指针 (int**) 和双括号,用于从 2D 数组中获取值
- (C++)通过指针递增,或者:为什么这不起作用?指针->int = 指针->int+1;
- (c++)将int转换为char指针(int是int形式的字符)
- 如何使用指针到指针 (int **) 分配一维数组
- 删除地图中的指针<int,A*>
- 如何将字符串内存地址(如 "7fefe05a8")存储在 C++ 中的指针/int 变量中,以便我可以对其进行位屏蔽?
- 指向包含向量问题的实例类的指针<int>