這個問題是關於代碼解釋,而不是代碼調試。我正在使用的代碼工作。 我使用的是公共代碼,我很好奇,想看看他們的「成長陣」模板,它看起來像這樣的一個:指針轉換解引用指針有什麼用?
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