存储和检索char数组

时间:2016-05-18 04:00:42

标签: c++ arrays pointers linked-list

假设我们有一个char数组:

char pool[1000];

和指针

char* ptr;

指针将地址存储到Pool中的数据块。我想将这个地址存储在池中并检索它。

基本上,我想要做的是嵌入在char数组Pool中的链表。原因是我不允许创建任何新的变量(全局),并且我不能包括新的标题,以及其他限制。

所以问题是:如何对pool []的前4个元素进行分段和拟合(比方说),以及如何再次检索它以进行修改。

此操作将经常发生,因此需要快速...当然不依赖于外部功能。

2 个答案:

答案 0 :(得分:1)

要在ptr中存储pool的值,请使用:

memcpy(pool, &ptr, sizeof(ptr));

要从pool检索指针的值,请使用:

memcpy(&ptr, pool, sizeof(ptr));

回复:

  

此操作将经常发生,因此需要快速...当然不依赖于外部功能。

memcpy正是您所需要的。如果您无法使用memcpy,则需要在代码中实现确切的功能。

除非您能够验证对memcpy的调用是性能瓶颈,否则我建议您使用它。

答案 1 :(得分:0)

如果你想在池中存储ptr,那么你应该有一个地址池吗?

char *pool[1000];

然后

pool[0] = ptr;
ptr = pool[0];
etc.

如果你必须处理一个字符缓冲区,那就是

char pool[1000];

但将其视为地址缓冲区,然后通过创建局部变量来弯曲它:

char **pp = reinterpret_cast<char**>(&pool);
*pp = ptr;

后者将ptr存储在缓冲池的开头。要检索它:

ptr = *pp;

您可以通过递增指针pp

来移动池
pp++ // next address

并且不要假设地址是4个字节!