1

我正在做一个 C++ 项目,我需要一些健全的检查和帮助。我想返回一个指向数组中内存位置的 void* 指针(我将通过

void* 指针 = (void*) (array+index);
)。该数组由字符组成,因此索引/字节编号效果非常好。

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

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

任何帮助将不胜感激!

4

2 回答 2

1

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

char array[1200];

void * p = array + 17;

// later:

p = array + 29;

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

于 2013-05-19T23:44:42.287 回答
0

要指向其他地方,只需将指针转换回 char*,进行指针算术运算即可。

char *ptr_tmp = (char*)pointer;

ptr_tmp += 100;

pointer = (void*)ptr_tmp;

这就是我理解你的问题是什么?!

于 2013-05-19T23:44:52.467 回答