Если вам нужно только передать двойной указатель на библиотечную функцию, вам не нужно создавать переменную для нее. Вы создаете обычную переменную-указатель, инициализируете ее, чтобы она указала на соответствующее хранилище (если это требуется функцией), затем передаете адрес указателя (таким образом, создавая двойной указатель «на лету»).
Я никогда не использовал libusb, поэтому приведу пример использования стандартной библиотечной функции. С справочной страницы:
#include <stdlib.h>
long int strtol(const char *nptr, char **endptr, int base);
Это только выглядит как двойной указатель. Это действительно одиночный указатель с имитацией передачи по ссылке. Разрешение функции возвращать дополнительную информацию помимо ее обычного возвращаемого значения. strtol
возвращает длинное целое число, но оно также может сказать вам, в какой момент содержимое строки перестало выглядеть как число.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char *str = "99RED BALLOONS";
char *what;
long num;
num = strtol(str, &what, 10);
printf("Quantity: %ld; Description: %s;\n", num, what);
return 0;
}
Выход:
Quantity: 99; Description: RED BALLOONS;