void **Init(int numElems)
{
// This allocates the memory and sets it to 0 (NULL)
void **ptrElms = calloc(numElems * sizeof(void *) );
return ptrElems;
}
Вы также можете вызвать memset или bzero в памяти после того, как выделите ее, что даст тот же результат, но тогда вам придется проверить возвращаемое значение перед обнулением памяти в случае сбоя malloc.
Ответ STH будет работать для следующей части, но так будет:
void **GetPtr(void **ptrElems, int index)
{
return ptrElems + index;
}
Когда вы добавляете целое число к указателю C, предполагается, что вы хотите, чтобы целое число было похоже на индекс массива, и добавляло размер того, на что оно указывает, умноженное на целое число. Вот почему вы можете ++ или - указатель и получить указатель на следующий или предыдущий элемент.