C 为什么libusb_设备**开发者有一个双指针?

C 为什么libusb_设备**开发者有一个双指针?,c,usb,libusb,C,Usb,Libusb,我一直在看很多libusb的开源代码,以获取有关USB设备的信息。因为他们宣称, libusb_设备**devs=NULL//指向检索设备列表的指针。但在其他一些实现中,它们是用单个指针声明的 据我所知,双指针用于动态更改变量的值。因此,如果任何设备是新连接的,这意味着它将在这个devs字段中自动更新。此字段用于libusb\u get\u设备\u列表(NULL,&devs)。以便返回正确的设备列表 是这样吗 还有一件事:我们可以说是指向一维数组的指针。所有连接的设备都像一维数组一样存储在lib

我一直在看很多libusb的开源代码,以获取有关USB设备的信息。因为他们宣称, libusb_设备**devs=NULL//指向检索设备列表的指针。但在其他一些实现中,它们是用单个指针声明的

据我所知,双指针用于动态更改变量的值。因此,如果任何设备是新连接的,这意味着它将在这个devs字段中自动更新。此字段用于libusb\u get\u设备\u列表(NULL,&devs)。以便返回正确的设备列表

是这样吗

还有一件事:我们可以说是指向一维数组的指针。所有连接的设备都像一维数组一样存储在libusb中吗


如果我们用一个指针声明,行为会发生什么变化?

您走在正确的轨道上,但并不正确:这与能够在运行时更改内容无关

此外,还有三个
*
,而不仅仅是两个:

ssize_t libusb_get_device_list  (   libusb_context *    ctx,
        libusb_device ***   list 
    )       
设备列表是设备指针列表(设备指针,因此是“内部”
*
);制作列表的C风格方法是传输指向第一个元素的指针,在本例中,第一个元素是指向设备指针的指针

因此,要将该列表写入您想要的地址,函数需要指向该列表的指针,因此:


指向指向指针的指针。

U表示设备列表中有指向所有设备的指针来隐藏该指针,我们使用的是双指针?@freeworld与隐藏无关;这实际上就是你如何拥有一个指针列表。:谢谢。假设我们作为一个指针使用,也会有任何行为变化?或者我们需要为一个指针做任何事情?@freeworld:当然,
***
不同于
*
。你期待什么?说真的,这个指针处理应该不会让您感到困惑。你需要先复习一下你的C语言知识。