C++;从Char数组返回T类型的指针 我们正在研究一个项目,它要求我们在C++中建立和管理堆。我们使用字符数组来存储内存(在项目中不使用“new”)。我们有一个allocate函数,需要返回T类型的指针。我们有两个DEF类型和一个模板来帮助我们 template <typename T> typedef T value_type; typedef value_type* pointer; 模板 类型定义T值_类型; typedef值\u type*指针;

C++;从Char数组返回T类型的指针 我们正在研究一个项目,它要求我们在C++中建立和管理堆。我们使用字符数组来存储内存(在项目中不使用“new”)。我们有一个allocate函数,需要返回T类型的指针。我们有两个DEF类型和一个模板来帮助我们 template <typename T> typedef T value_type; typedef value_type* pointer; 模板 类型定义T值_类型; typedef值\u type*指针;,c++,arrays,templates,pointers,typedef,C++,Arrays,Templates,Pointers,Typedef,所以我们需要返回一个“指针”。问题是: 如何返回指向字符数组中某个索引的“指针”? 假设分配的块的起点指向地址5,类型名T是int。我们如何制作一个int指针(使用“指针”)指向数组索引5 我们已经尝试使用reinterpret_cast(一个[index])将数组索引转换为指针。此外,我们还尝试了重新解释(a+索引)以获取数组指针,按索引将其上移,并将其转换为我们的类型指针。每次,指针都指向“0xfffffffffff”或一组f,后面可能是0c或某个随机值,因此,一旦我们在程序中稍后取消引用它

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

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

假设分配的块的起点指向地址5,类型名T是int。我们如何制作一个int指针(使用“指针”)指向数组索引5

我们已经尝试使用
reinterpret_cast(一个[index])
将数组索引转换为指针。此外,我们还尝试了
重新解释(a+索引)
以获取数组指针,按索引将其上移,并将其转换为我们的类型指针。每次,指针都指向“0xfffffffffff”或一组f,后面可能是0c或某个随机值,因此,一旦我们在程序中稍后取消引用它,就会导致分段错误(例如,在构造函数中)

谢谢


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

我想我们已经搞定了。我们有:

reinterpret\u cast(一个[索引])

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

我们把它改成了

reinterpret\u cast(&a[index])

这将给我们一个指向数组索引的指针(基本上是指向值的指针,而不是值的指针)。很抱歉,如果“of”和“to”这两个词的微妙用法不起作用。我想这是两者的区别

int a=5

int*k=&a

vs


int*k=a//即使这不会编译

什么是
a
的声明类型?如果它是
ta[]
,那么你能做
a+index
&a[index]
?我看不需要演员阵容。对不起,我应该说得更清楚。数组“a”是我们提到的字符数组。字节对齐有问题吗?您可能必须考虑这样一个事实:堆中的元素必须在适当的边界上对齐:长4字节,长8字节,等等。当
T
char
时,它能工作吗?(如果不是,那一定有一个更深层次的问题,与数据类型的改变无关。)好吧,尽量不要涉及太多细节,但每当我们分配内存时,我们都会在块的两端创建哨兵,指示块的大小。块的大小是块的数量乘以数据类型的大小(例如,为int类型分配(5)-类型在模板中给出-将在数组中分配20个索引,例如从20到40的索引)。在分配结束时,我们需要返回一个指向块开始处的索引的指针。我不能100%确定对齐方式会是怎样的,因为我们基本上是在处理字节数组。