在c++中,改变指针返回后指向的对象

Change what a pointer points to after you return it in C++

本文关键字:对象 返回 指针 c++ 改变      更新时间:2023-10-16

我正在做一个c++项目,我需要一点完整性检查和帮助。我想返回一个void*指针,指向数组中的内存位置(我将通过<>之前Void *指针= (Void *)(数组+索引);之前)。数组是由字符组成的,因此索引/字节编号工作得非常好。

但是,我希望能够在稍后更改此位置指向的内存(数组中的不同位置)作为对代码中某些条件的响应。有办法做到这一点吗?我正在摆弄void**指针,并试图返回对内存中存储指针的位置的引用,因此我可以更改存储指针本身的内存并更改读取的指针。但是,我在语法上遇到了麻烦,而且我不完全确定这是可能的。

我在相当严格的约束下工作,我不能回避我必须返回void*指针的事实,否则我认为可能有一些更好的方法来解决这个问题。

任何帮助都将非常感激!

您可以简单地重新分配指针:

char array[1200];
void * p = array + 17;
// later:
p = array + 29;

(不需要强制类型转换,因为对象指针可以隐式地转换为void指针)

指向其他地方只要将指针转换回char*,进行指针运算,就可以了。

char *ptr_tmp = (char*)pointer;
ptr_tmp += 100;
pointer = (void*)ptr_tmp;

这就是我理解的你的问题所在?!