C ++从Char数组返回T类型的指针

时间:2012-10-10 02:41:37

标签: c++ arrays templates pointers typedef

我们正在开发一个项目,要求我们在C ++中创建和管理堆。我们使用字符数组来存储我们的内存(在项目中不使用“new”)。我们有一个需要返回类型为T的指针的分配函数。我们有几个类型的defs和一个模板来帮助我们

template <typename T>
typedef T    value_type;
typedef value_type*  pointer;

所以我们需要返回一个“指针”。问题是:

我们如何返回指向字符数组中某个索引的“指针”?

假设已分配块的起点指向地址5,并且typename T为int。我们如何使用指向5?

的数组索引的int指针(使用我们的“指针”)

我们尝试使用reinterpret_cast <pointer> (a[index])将数组索引转换为指针。另外,我们尝试reinterpret_cast <pointer> (a + index)来获取数组指针,将其向上移动索引,然后将其强制转换为类型指针。每次,指针指向诸如“0xfffffffffff”之类的东西或者一堆f,其后跟可能是0c或一些随机值,因此一旦我们在程序中稍后取消引用它(例如在构造函数中)就会导致分段错误。

谢谢!

编辑数组“a”是我们的字符数组

1 个答案:

答案 0 :(得分:0)

我想我们已经明白了。我们有:

reinterpret_cast <pointer> (a[index])

这将为我们提供数组索引的指针(基本上是指针 一个值,而不是指针一个值)。

我们将其更改为

reinterpret_cast <pointer> (&a[index])

这会给我们一个指向数组索引的指针(基本上是一个指针该值,而不是 该值)。对不起,如果这个微妙的使用“of”和“to”就没有了。我想这是

之间的区别

int a = 5

int* k = &a

VS

int* k = a //even though this wouldnt compile