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

标签 c++ arrays templates pointers typedef

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

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

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

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

如果分配 block 的开始指向地址 5,并且类型名称 T 是 int。我们如何创建一个指向数组索引 5 的 int 指针(使用我们的“指针”)?

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

谢谢!

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

最佳答案

我想我们已经弄清楚了。我们有:

reinterpret_cast <pointer> (a[index])

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

我们把它改成了

reinterpret_cast <pointer> (&a[index])

这会给我们一个指向数组索引的指针(基本上是一个指向值的指针,而不是值的指针)。很抱歉,如果这种对“of”和“to”的微妙使用从那以后没有成功。我想这是两者之间的区别

int a = 5

int* k = &a

对比

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

关于C++ 从 Char 数组返回 T 类型的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12811223/

相关文章:

c++ - OpenCV - cvCreateTrackbar()

c++ - 警告 RC4011 : identifier truncated to

javascript - 如何总结特定的多种数据类型 JavaScript

c++ - std::get 从模板参数

c++ - 如何使用模板将 QString 转换为类型名?

c++ - 模板隐式实例化和内联成员

c++ - 选择默认的 gcc/g++ 编译器

c++ - 私有(private)成员黑客行为是否已定义?

c - 字符数组有问题?

javascript - 基于 "Date"的数据的数据结构