Я пытаюсь построить массив символов для хранения возвращаемого значения функции. В следующей функции данные хранятся в ***** valv **. Как создать внешнюю переменную для доступа к данным?C++ Как использовать и передавать трехмерный массив символов?
int credis_lrange(REDIS rhnd, const char *key,
int start, int end, char ***valv)
{
int rc;
if ((rc = cr_sendfandreceive(rhnd, CR_MULTIBULK, "LRANGE %s %d %d\r\n",
key, start, end)) == 0)
{
*valv = rhnd->reply.multibulk.bulks;
rc = rhnd->reply.multibulk.len;
}
return rc;
}
Решение:
char **elements;
int size = credis_lrange(this->redis,"object_2",600,603,&elements);
for (int i=0; i<size;i++) {
cout << "element: " << elements[i] << endl;
}
Спасибо всем!
Многие дубликаты. Начните с http://stackoverflow.com/questions/917783/how-do-i-work-with-dynamic-multi-dimensional-arrays-in-c http://stackoverflow.com/questions/1874604/passing-an -array-of-arrays-in-c http://stackoverflow.com/questions/2003745/pointer-address-in-ac-multidimensional-array и есть другие ... – dmckee
Не то, чтобы он напрямую отвечал на ваш вопрос, но массивы «не являются предпочтительными» в C++, и вы должны использовать контейнерный класс STL, возможно, вектор. – Mawg
Credis lib - это C lib. Можно ли использовать C++-векторы в C? – dan