在C ++中返回指针后,更改指针指向的内容

时间:2013-05-19 23:40:21

标签: c++ pointers

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

void* pointer = (void*) (array+index);
)。数组是字符,所以索引/字节编号非常好。

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

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

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

您可以简单地重新指定指针:

char array[1200];

void * p = array + 17;

// later:

p = array + 29;

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

答案 1 :(得分:0)

指向其他地方只是将指针强制转换为char *,做指针算术,就是这样。

char *ptr_tmp = (char*)pointer;

ptr_tmp += 100;

pointer = (void*)ptr_tmp;

这是我明白你的问题是什么?!