这个问题是关于代码解释,而不是代码调试。我正在使用的代码工作。 我使用的是公共代码,我很好奇,想看看他们的“成长阵”模板,它看起来像这样的一个:指针转换解引用指针有什么用?
template <typename TYPE>
TYPE *grow(TYPE *&array, int n, const char *name)
{
if (array == NULL) return create(array,n,name);
bigint nbytes = ((bigint) sizeof(TYPE)) * n;
array = (TYPE *) srealloc(array,nbytes,name);
return array;
}
和功能srealloc看起来是这样的:
void *Memory::srealloc(void *ptr, bigint nbytes, const char *name)
{
if (nbytes == 0) {
destroy(ptr);
return NULL;
}
ptr = realloc(ptr,nbytes);
if (ptr == NULL) {
error();
}
return ptr;
}
请忽略现在的创建函数。我的主要问题是为什么他们在模板中进行指针投影并取消引用array
?那有什么好处?如果他们根本没有*&
呢?
谢谢!
感谢这些例子和澄清,这非常有帮助。为了正确理解你,这些函数是否可以在没有'return'的情况下工作,因为它们已经直接改变了参数? – Amit
@Amit:确实如此。 – TonyK
你会介意看看我对@DannisZickefoose的评论吗? – Amit